1

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);

正常に実行され、InsertMenuItemWの戻りコードは1ですが、メニューに圿の代わりに疑問符が表示されます</ p>

疑問符が表示されるのはなぜですか?

私はWindows7Ultimateを実行しています

4

1 に答える 1

5

プログラムは、Unicodeウィンドウではなく、MBCSウィンドウを作成しています。CreateWindowExW()の代わりにCreateWindowExA()を使用するためです。これをSpy++で確認します。ファインダーツールを使用してプログラム内のウィンドウを選択し、そのプロパティを確認します。ウィンドウがCreateWindowExW()で作成された場合、ウィンドウにはWindow Proc用に「(Unicode)」のマークが付いています。

Unicodeに移行する時が来ました。

于 2011-08-18T18:54:49.470 に答える