1

我有一个用 MBCS 编译的 MFC 应用程序。我们还使用 MFC 功能包中的 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);

运行正常,InsertMenuItemW 的返回码为 1,但我的菜单中出现问号而不是圿</p>

为什么我得到问号?

我正在运行 Windows7 Ultimate

4

1 回答 1

5

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

是时候转移到 Unicode 了。

于 2011-08-18T18:54:49.470 回答