无法获取 Visual C++ 6.0 对话框编辑控件以接受 Unicode /无法获取 EDITTEXT 资源以接受 Unicode
Can't Get Visual C++ 6.0 Dialog Edit Control to Accept Unicode / Can't Get EDITTEXT Resource to Accept Unicode
我在Windows 7中使用Visual C++ 6.0。我转到文件>新。我选择Win32应用程序并将其命名为HelloWorld。出现"Win32 应用步骤 1(共 1 步)"。我选择"典型的Hello World应用程序"。VC创建了一个简单的Hello World App。
我选择文件HelloWorld.cpp。我在 HelloWorld.cpp 文件的顶部粘贴以下定义:
#define UNICODE
#define _UNICODE
然后我双击HelloWorld.rc。我打开"对话框"项。在它下面是IDD_ABOUTBOX。我双击它。然后,我将一个 EDITTEXT 控件添加到对话框窗口。我按 ctrl-F5 运行该程序。
我选择"关于","关于"对话框与 EDITTEXT 控件一起显示。然后,我转到 charmap.exe 应用程序并从 Meiryo 字体中选择一个日语平假名字符。我将其复制到剪贴板。
然后,我将其粘贴到 EDITTEXT 控件中。它显示为"?"问号。
我不知道该怎么办。如何让对话框编辑框接受 Unicode?
提前感谢,莱恩
不要在源文件中定义 UNICODE 和 _UNICODE。 您必须在项目级别定义它。VS 中的表单菜单选择项目和设置 (Alt-7)。
在对话框中,选择"C++选项卡",然后从"类别"下拉框中选择"预处理器"。在下面的编辑框中,输入 UNICODE 并用逗号分隔_UNICODE。
现在,编辑控件(按原样)使用没有扩展字符集的系统字体。您必须更改编辑控件的字体。
在对话框中WM_INITDIALOG处理程序执行以下操作:
case WM_INITDIALOG:
{
LOGFONT lf;
::GetObject((HFONT)GetStockObject(DEFAULT_GUI_FONT), sizeof(lf), &lf);
HWND hEdit = GetDlgItem(hDlg, IDC_EDIT1);
HDC hDC = GetDC(hEdit);
_tcscpy(lf.lfFaceName, _T("Arial"));
lf.lfHeight = -MulDiv(10, GetDeviceCaps(hDC, LOGPIXELSY), 72);
//This creates the new font for the edit control
HFONT hFont = CreateFontIndirect(&lf);
//This sets the new font for the edit control
SendMessage(hEdit, WM_SETFONT, (WPARAM)hFont, FALSE);
}
return TRUE;
请记住,并非所有字体类型都有扩展字符集。我认为在代码片段中将其设置为Arial应该有效。
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 获取Unicode字符C++的十进制值
- 如何正确获取 Unicode 窗口标题
- Unicode - ICU 库 - 获取 UnicodeString 中的代码点计数
- C++字符串到字符串打印不正确,无法获取 unicode 路径
- 如何从 c++ 或 cocos2dx 中的表情符号中获取 unicode
- 如何从 UTF-8 字符串的每个字符中获取 UNICODE 代码
- 获取Crypto++中Unicode字符串的SHA1
- 如何从Excel获取Unicode字符串
- 无法获取 Visual C++ 6.0 对话框编辑控件以接受 Unicode /无法获取 EDITTEXT 资源以接受 Unicode
- C++通过 utf-8 值获取 unicode 字符
- 是否可以使用MinGW在Windows XP控制台上获取unicode字符
- 从富编辑控件中获取unicode字符
- 获取c++中unicode字符的CodePoint
- 获取unicode代码点的大写或小写(如uint32_t)