注意:如果多字节版本下不添加上述代码,则编辑框不能正常显示vật huyền,部分字符显示乱码。

 

同样的三个编辑框控件,分别输入:vật huyền

【原创】多字节版本下MFC控件处理字符集的BUG

其中第二个编辑框绑定到MFC控件CEdit:

DDX_Control(pDX, IDC_EDIT2, m_edit2);

程序运行后,分别用spy++获取编辑框文本,第一个和第三个都显示正常:

【原创】多字节版本下MFC控件处理字符集的BUG

 

第二个编辑框的文本获取到的为乱码:

【原创】多字节版本下MFC控件处理字符集的BUG

 

问题产生原因:

第一和第三个编辑框控件的消息流程走的是默认机制,不存在字符集转换的bug。而第二个编辑框控件走的是MFC消息机制,在处理WM_GETTEXT消息时存在字符集转换BUG。

相关例子见:《【反外挂】重载WM_GETTEXT消息处理函数使spy++无法获取窗口文本》:http://www.cnblogs.com/daxingxing/archive/2012/06/14/2549279.html

 

注意:项目如果是UNICODE版本则不存在上述问题。

 

 

 

标签:

相关文章