こんにちは、アプリケーションで言語を変更するときに問題が発生しました。今、私はいくつかの言語で構成されるライブラリを持っています。リソースを操作するために WTL::CAppModule を使用し、dll をロードするための次のコードを記述します。
void Application::LoadResources()
{
m_resModule = ::LoadLibraryEx(_T("Res.dll"), 0, 0);
ATLASSERT(m_resModule);
if (!m_resModule)
{
ATLTRACE(_T("Resources loading failed!\n"));
return;
}
m_theModule.SetResourceInstance(*m_resModule);
}
アプリケーションの言語を変更する関数には、次のコードが含まれています。
if(prim_lang)
{
if(Tools::SystemTools::IsVistaOrLater())
SetThreadUILanguage(MAKELANGID(prim_lang, sub_lang));
else
SetThreadLocale(MAKELCID(MAKELANGID(prim_lang, sub_lang), SORT_DEFAULT));
}
すべて正常に動作しましたが、Windows XP では一般的に言語は変わりません。関数 SetThreadLocale(MAKELCID(MAKELANGID(prim_lang, sub_lang), SORT_DEFAULT)); を間違って使用している可能性がありますか? 多言語アプリを構築するにはどうすればよいですか?すべての言語を1つに保存するのではなく、異なるライブラリに個別の言語が必要になる場合があり、ユーザーが選択したとおりにロードしますか?