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

 

工程项目属性:html

字符集:多字节函数

stdafx.h文件中添加:3d

#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")

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

 

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

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

DDX_Control(pDX, IDC_EDIT2, m_edit2);

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

 

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

 

问题产生缘由:class

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

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

 

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

相关文章
相关标签/搜索