曲线解决CMFCPropertyGridCtrl掩码的bug2009年12月30日 星期三 下午 01:24CMFCPropertyGridCtrl这个控件当用到掩码时,会有问题.解决办法用其他掩码替代.下面是一个IP掩码处理方法.代码如下
2010-12-13 13:30
836 查看
2009年12月30日 星期三 下午 01:24
CMFCPropertyGridCtrl这个控件当用到掩码时,会有问题.解决办法用其他掩码替代.下面是一个IP掩码处理方法.代码如下 class CMyMaskEditProp : public CMFCPropertyGridProperty { public: CMyMaskEditProp(const CString& strName, const COleVariant& varValue, LPCTSTR lpszDescr = NULL, DWORD_PTR dwData = 0, LPCTSTR lpszEditMask = NULL, LPCTSTR lpszEditTemplate = NULL, LPCTSTR lpszValidChars = NULL); virtual BOOL OnUpdateValue(); protected: virtual CWnd* CreateInPlaceEdit(CRect rectEdit, BOOL& bDefaultFormat); //virtual BOOL OnSetCursor() const { return FALSE; /* Use default */ } }; //////////////////////////////////////////////////////////////////////////////// // CMyMaskEditProp class CMyMaskEditProp::CMyMaskEditProp(const CString& strName, const COleVariant& varValue, LPCTSTR lpszDescr, DWORD_PTR dwData, LPCTSTR lpszEditMask, LPCTSTR lpszEditTemplate, LPCTSTR lpszValidChars): CMFCPropertyGridProperty(strName,varValue, lpszDescr,dwData, lpszEditMask, lpszEditTemplate,lpszValidChars) { } BOOL CMyMaskEditProp::OnUpdateValue() { ASSERT_VALID(this); ASSERT_VALID(m_pWndInPlace); ASSERT_VALID(m_pWndList); ASSERT(::IsWindow(m_pWndInPlace->GetSafeHwnd())); //long lCurrValue = m_varValue.lVal; CMaskEdit* pWndEdit = (CMaskEdit*) m_pWndInPlace; CString str; pWndEdit->GetWindowText(str); if (str != (char *)(_bstr_t)m_varValue) { m_varValue=str; m_pWndList->OnPropertyChanged(this); } return TRUE; } CWnd* CMyMaskEditProp::CreateInPlaceEdit(CRect rectEdit, BOOL& bDefaultFormat) { CMaskEdit* pWndEdit = new CMaskEdit; pWndEdit->m_bisTime = FALSE; pWndEdit->m_isdate = FALSE; pWndEdit->m_bUseMask = TRUE; pWndEdit->m_strMask = "000.000.000.000"; pWndEdit->m_strLiteral = "___.___.___.___"; pWndEdit->m_str = "255.255.255.255"; pWndEdit->m_strMaskLiteral = m_varValue.bstrVal; DWORD dwStyle = WS_VISIBLE | WS_CHILD | ES_AUTOHSCROLL ; if (!m_bEnabled || !m_bAllowEdit) { dwStyle |= ES_READONLY; } pWndEdit->Create(dwStyle, rectEdit, m_pWndList, AFX_PROPLIST_ID_INPLACE); pWndEdit->SetWindowText((char *)(_bstr_t)m_varValue); bDefaultFormat = TRUE; return pWndEdit; } |
相关文章推荐
- 在一个有返回值的方法里使用了子线程,如何返回子线程中的值,如下代码中,我在子线程获取到了address的值,但是这个方法的返回结果是空,该如何解决?
- 【备查】DELL服务器硬件报错解决方法――错误代码寄解决和处理办法
- 常量,字段,构造方法 调试 ms 源代码 一个C#二维码图片识别的Demo 近期ASP.NET问题汇总及对应的解决办法 c# chart控件柱状图,改变柱子宽度 使用C#创建Windows服务 C#服务端判断客户端socket是否已断开的方法 线程 线程池 Task .NET 单元测试的利剑——模拟框架Moq
- python时间处理方法datetime(),下面就举几个代码案例进行说明,代码如下:
- C#动态代码生成控件后其他事件不能获取该控件值的解决方法
- 一个ArcGIS Javascript API的BUG和处理办法 - 调用两次Draw工具条deactivate方法导致的错误
- 安装DELPHI 7.0 以后,只有一个控件面板“standard”,只有一个控件“frames”,其余的都不见了,处理方法如下
- ora-12154 tns 无法处理服务名(执行的程序途径不一致导致,枚举网络数种方法,大家还有其他解决办法?)
- ASP.NET AJAX DropShadow 控件的一个BUG和解决方法(a bug of DropShadow and solution to resolve)
- qt5集成libcurl实现tftp和ftp的方法之三:搭建FTP时,当ftpServer端默认登录的目录不是根目录/时,有一个bug会产生的解决办法
- 一个ArcGIS Javascript API的BUG和处理办法 - 调用两次Draw工具条deactivate方法导致的错误
- RichEdit控件在处理EM_REPLACESEL消息中有bug?附一种解决办法
- Call requires API level 16 (current min is 8 一个正常的代码出现这个错误提示: 解决方法: 在工程上右键 Android Tools | Clear
- 动态方法调用 在Struts2中动态方法调用有三种方式,动态方法调用就是为了解决一个Action对应多个请求的处理,以免Action太多 第一种方式:指定method属性 这种方式我们前面已经用到过
- MVC中,加入的一个aspx页面用到AspNetPager控件处理办法
- RichEdit控件在处理EM_REPLACESEL消息中有bug?附一种解决办法
- 如何解决asp.net 在vs2010(.net framework 4.0)中listview控件用jquery,javascript为模版中的服务端控件注入事件的方法?因为vs2010在这个方面有存在的bug!
- 项目调试时候,出现其中用到的一个组件“访问被拒绝”的解决方法(.net的一个BUG)
- 在一个程序中需要用到全局变量(在多个class之间共享数据),请问如何定义具有这种功能的变量?或者是否有其他的方法解决多个class之间的数据共享(尽量简单实现)。 首先应该明确 Java中没有全局变
- gentoo nvidia-settings-180.60.ebuild 一个bug 的解决方法