1

こんにちは、アプリケーションで言語を変更するときに問題が発生しました。今、私はいくつかの言語で構成されるライブラリを持っています。リソースを操作するために 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つに保存するのではなく、異なるライブラリに個別の言語が必要になる場合があり、ユーザーが選択したとおりにロードしますか?

4

0 に答える 0