c++ 即使在UNICODE中也不显示Win32 GUI重音符号

e5nqia27  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(122)

我正在使用MSVC 2022的窗口API制作一个GUI,
当我试图在我的小部件中显示é char时,编码出现了问题

下面是小部件的代码:我尝试使用宽字符串和TEXT宏

CreateWindowW(
L"STATIC",  // Predefined class; Unicode assumed
L"éééé",      // text
WS_VISIBLE | WS_CHILD,  // Styles
10,         // x position
10,         // y position
250,        // Button width
50,        // Button height
hWnd,     // Parent window
NULL,       // No menu.
hInst,
NULL);      // Pointer not needed.

CreateWindowW(
L"BUTTON",  // Predefined class; Unicode assumed
TEXT("réééé"),      // Button text
WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_DEFPUSHBUTTON,  // Styles
300,         // x position
10,         // y position
250,        // Button width
50,        // Button height
hWnd,     // Parent window
(HMENU)ID_OK,       // No menu.
hInst,
NULL);      // Pointer not needed.

我的MSVC对文件使用UNICODE(我签入了参数),并定义了UNICODE和_UNICODE。
我错过什么了吗?
感谢您抽出宝贵时间
感谢John的评论,我解决了这个问题,cpp文件保存在utf-8而不是utf-16中。这可以通过“另存为”菜单进行更改。

hmae6n7t

hmae6n7t1#

我错过什么了吗?
是的,MVSC中使用的字符集不必与您正在使用的库中使用的字符集相同,也不必与运行时选择的字符集相同。请检查您的库文档,以支持UNICODE,因为它似乎将您的Unicode序列显示为iso-latin-1字符对。
恕我直言,Microsoft花了很长时间才适应unicode。尽管MVSC已经支持它,但很可能您使用的Windows环境/库不支持它(或默认配置不支持)。您在CreateWindowW调用中使用的注解不足以使它采用UNICODE字符。您可能需要在其他地方指定它。

相关问题