Почему в меню появляется знак вопроса вместо символа Юникод? - PullRequest
1 голос
/ 18 августа 2011

У меня есть приложение MFC, скомпилированное с MBCS. Мы также используем CMFCMenuBar из MFC Feature Pack для отображения нашего меню.

Я пытаюсь добавить символы юникода в мое меню, используя следующий код (из этот вопрос )

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, но вместо меню я получаю знак вопроса вместо 100

Почему я получаю знак вопроса?

Я использую Windows7 Ultimate

1 Ответ

5 голосов
/ 18 августа 2011

Ваша программа создает окна MBCS, а не окна Unicode.Потому что он использует CreateWindowExA () вместо CreateWindowExW ().Проверьте это с помощью Spy ++.Используйте его инструмент поиска, чтобы выбрать окно в вашей программе, посмотрите на его свойства.Окно имеет «(Unicode)», помеченное для Window Proc, если оно было создано с помощью CreateWindowExW ().

Время перехода в Unicode.

...