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

时间:2011-08-18 18:15:20

标签: winapi unicode localization mfc-feature-pack

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

我正在尝试使用以下代码(来自this question)将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);

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

为什么我会收到问号?

我正在运行Windows7 Ultimate

1 个答案:

答案 0 :(得分:5)

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

时间转移到Unicode。