私はWindows APIを使用してC言語で多言語Win32プログラムを開発しています。これにより、ユーザーはインターフェースの言語を選択できます。 MSDN documentationに従って、私はFindResourceEx()
+ LoadResource()
とではなく、で信頼性の低いSetThreadLocale()
を使用する必要があります。`FindResourceEx()`と `LoadResource()`を使って新しいメニューを読み込む方法は?
私の問題は次のとおりです。リソースからメニューをロードする方法がわかりません。
以下のサンプルコードを考慮して、メニューを読み込んで更新するにはどのように変更する必要がありますか?
HMENU hMenu = GetMenu(hWnd);
SetMenu(hWnd, NULL);
DestroyMenu(hMenu);
HRSRC rcMenu = FindResourceEx(NULL, RT_MENU, MAKEINTRESOURCE(IDM_MENU),
MAKELANGID(LANG_AFRIKAANS, SUBLANG_AFRIKAANS_SOUTH_AFRICA));
hMenu = LoadResource(NULL, rcMenu); /* ??? HGLOBAL used as a HANDLE? */
SetMenu(hWnd, hMenu);
:それ自身のリソースDLL内の各言語。次に、実行時に、目的のユーザー言語に一致するリソースDLLをロードするだけです。そのような特別な処理をすることなく直接 'LoadMenu'を呼び出すことができます。画像やアイコンなどのローカライズされていないリソースは、EXEにそのまま残ります。あなたはそれらの行に沿った解決策に興味がありますか? – selbie
@selbieはい、私は午前です。特にランタイム中にいつでも言語を変更できるようにしている場合は特にそうです。 – user7023624