在MBCS类型项目中使用UNICODE支持编辑控件

时间:2013-10-09 12:50:04

标签: visual-c++ unicode mfc

我有旧的MFC应用程序,它支持MBCS(多字节字符集)。我有一个与此Control相关的Edit Control和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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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);