【原創】多字節版本下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版本則不存在上述問題。

相關文章
相關標籤/搜索