RegisterClassExW
とCreateWindowExW
を使用してウィンドウを作成する関数をエクスポートするDLLを作成しました。すべてのメッセージは、ユニコードウィンドウでの非ユニコードWM_CHAR
GetMessageW(&msg, wnd_handle, 0, 0);
TranslateMessage(&msg);
DispatchMessageW(&msg);
によって取得されます。また、DLLをロードして関数を呼び出すプログラムがあります。
Unicodeのウィンドウ作成方法にもかかわらず、WM_CHAR
メッセージのwParam
には、ASCII以外の記号を入力するかAlt +(コード)を使用しても常にASCII文字が含まれます。 UTF-16の代わりに、wParam
には、 'A'と 'z'の間にASCII文字が含まれています。 WndProc
は、DLL内の静的関数です。
すべてのウィンドウ関連のコードが1つのプログラム内にある場合、問題は発生しません。
DLLのウィンドウ内にユニコードWM_CHAR
のメッセージが常にあるのですか?
設定はUnicodeに設定されています。 _UNICODEプリプロセッサディレクティブも設定されています。 – mrshpot