2

我有支持 MBCS(多字节字符集)的旧 MFC 应用程序。我有一个与此控件相关的编辑控件和 CString。现在我希望只有此控件应支持 UNICODE(UTF-16) 字符集。

编辑:

在头文件中:

CString m_SerialNO;

在 cpp 文件中:

DDX_Text(pDX, IDC_EDIT_SERIAL_NO, m_SerialNO);

我无法将项目的字符集属性从 Use Multi-Byte Character Set更改为Use Unicode Character Set

4

2 回答 2

0

只要使用 CreateWindowA 创建 Edit 控件,所有消息都将通过当前代码页进行过滤和转换...即使您使用 SetWindowTextW 或 WM_SETTEXTW,也会发生转换。

于 2013-10-09T14:03:39.117 回答
0

其实很简单:

// macro to get buffer size in declare character type
#define _countof(array) (sizeof(array)/sizeof(array[0]))

// text buffer must be in unicode
WCHAR szBufferW[1024];

// retrieve unicode text in MCBS build dialog
::GetDlgItemTextW(this->m_hWnd, IDC_EDIT1, szBufferW, _countof(szBufferW));

// display unicode text in in MCBS build dialog
::SetDlgItemTextW(this->m_hWnd, IDC_EDIT2, szBufferW);
于 2013-10-10T20:03:03.913 回答