【发布时间】:2014-11-05 11:03:26
【问题描述】:
我有Multi-Byte Char Set MFC windows 应用程序。现在我需要在 Windows 控件上显示国际单字节 ASCI 字符。我不能直接使用ASCI 字符,因为要正确显示它们,需要将Windows 语言环境设置为适当的国家/地区。我需要在所有 Windows 语言环境中显示字符。为此,我必须将 ASCI 转换为 unicode。我可以在MessageBoxW 中显示所需的国际字符,但是如何使用SetWindowText 在 Windows MFC 控件上显示它们?
为了在MessageBoxW 中显示unicode 字符串,我在wstring 中构造它
WORD g [] = {0x105,0x106,0x107,0x108,0x109,0x110,0x111,0x112,0x113,0x114,0x115,0x116,0x117,0x118,0x119,0x120};
wstring gg (reinterpret_cast<wchar_t*>(g),15);
MessageBoxW(NULL, gg.c_str() , gg.c_str() , MB_ICONEXCLAMATION | MB_OK);
设置MFC表单控件文本:
class MyFrm: public CDialogEx
{
virtual BOOL OnInitDialog();
}
...
BOOL MyFrm::OnInitDialog()
{
GetDlgItem(IDC_EDIT_TICKET_NUMBER)->SetWindowText( ???);
}
是否有可能以某种方式将wstring gg 转换为 CString 并在窗口控件上显示 unicode 字符?
【问题讨论】:
-
你能说得更具体点吗?所以你想在项目目标多字节字符集时将 Unicode 文本设置到 MFC 控制框?你能把代码 sn-p 贴在你尝试的地方吗?
-
另请注意,从 Windows XP 开始支持 Unicode。仅当您针对的是较旧的操作系统(我认为不是这种情况)时,才应使用 ASCII。
-
是的,我想将 Unicode 文本设置到 MFC 控制框,而项目的目标是多字节字符集。我在消息正文中添加了一些代码
-
正确的答案是将整个项目转换为 Unicode,但我想你不想听到这个。
标签: c++ visual-c++ unicode mfc