为什么我在菜单中输入问号代替unicode字符?

Jon*_*nek 1 unicode winapi localization mfc-feature-pack

我有一个用MBCS编译的MFC应用程序.我们还使用MFC Feature Pack中的CMFCMenuBar来显示我们的菜单.

我正在尝试使用以下代码将unicode字符添加到我的菜单中(来自此问题)

MENUITEMINFOW mi;
mi.cbSize = sizeof(MENUITEMINFOW);
mi.fMask = MIIM_ID | MIIM_TYPE;
mi.fType = MFT_STRING;
mi.wID = 34503; 
WCHAR text[128];
wcscpy_s(text,L"\u573F");
mi.dwTypeData = text;
InsertMenuItemW(hMenu,1,true,&mi);
Run Code Online (Sandbox Code Playgroud)

运行正常,InsertMenuItemW的返回码为1,但我在菜单中得到一个问号而不是圿

为什么我会收到问号?

我正在运行Windows7旗舰版

Han*_*ant 5

您的程序正在创建MBCS窗口,而不是Unicode窗口.因为它使用CreateWindowExA()而不是CreateWindowExW().使用Spy ++验证这一点.使用其finder工具在程序中选择一个窗口,查看其属性.如果使用CreateWindowExW()创建窗口,则为Window Proc标记"(Unicode)".

是时候转向Unicode了.