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));?我必须如何构建多语言应用程序,可能需要将语言单独存储到不同的库中,而不是将所有语言保存在一个中,然后根据用户选择加载它?

4

0 回答 0