无法使用 Unicode 特殊字符设置窗口文本
Cannot set window text with Unicode special char
>我正在尝试使用下面指定的 unicode 特殊字符的代码设置对话框项文本:
https://www.fileformat.info/info/unicode/char/1f310/index.htm
我一直在尝试调用 SetWindowTextW 函数,将 UTF-16(十六进制)值作为参数传递,但没有成功:
GetDlgItem(IDSETTINGS)->SetWindowTextW(_T("uD83CuDF10"));
当我构建解决方案时,我遇到了两个错误:
错误 C3850:"\uD83C"universal-character-.name 指定了无效字符
错误 C3850:"\uDF10"指定无效字符的 universal-character-.name
我将不胜感激任何形式的帮助。
在这种情况下,编译器错误 C3850 的原因可以在参考中找到(强调我的):
表示为通用字符名称的字符必须表示 0-10FFFF 范围内的有效 Unicode 码位。普遍的性格 name不能包含 Unicode 代理项范围 D800-DFFF 中的值, 或编码的代理项对。编译器生成代理项 从有效代码点自动配对。
使用 UTF-32 码位对我有用:
GetDlgItem( IDSETTINGS )->SetWindowTextW( L"U0001F310" );
如果您确保源文件以 Unicode 编码存储,您也可以从字面上将字符存储在源文件中,我建议将 UTF-8 与 BOM 一起使用。
GetDlgItem( IDSETTINGS )->SetWindowTextW( L" " );
请注意,在使用W
(Unicode) API 时,切勿使用_T()
宏或_TEXT()
宏。这些宏根据预处理器变量更改字符串文本的类型,而 Unicode API 始终需要宽字符串,这是通过使用字符串文本的L
前缀强制执行的。
相关文章:
- 将 SDL2 窗口设置为特定显示
- 如何在win32的窗口类中设置动态菜单?
- 如何设置与其背景图像大小相对应的窗口大小?
- 设置窗口几何图形特性的正确方法
- Win32 C++ 将窗口位置设置为右下角
- QT:即使在static_cast后也无法在主窗口中设置对象的位置
- C# - 显示对话框将所有者设置为非托管窗口
- 如何在窗口上设置使用 CreateProcess 创建的新进程的主线程的堆栈大小?
- 如何设置终端窗口的固定尺寸
- 无法使用 Unicode 特殊字符设置窗口文本
- 设置子窗口的文本颜色
- 构造函数字符串参数未设置窗口标题
- 设置窗口大小后,SDL不会渲染到整个窗口
- 如何通过在运行时编辑文件来设置窗口属性
- 使用 winAPI 设置窗口的高性能电源计划C++
- 设置窗口放置不适用于最大化窗口
- 如何在MFC上设置窗口位置以将其定位到屏幕顶部
- JavaFX设置窗口总是在顶部与JNA库,windows操作系统
- 带有sdl设置窗口的proplem
- 创建后如何使用Windows API(C++)设置窗口像素的颜色?