在Dll资源中加载语言

时间:2012-10-18 06:47:04

标签: c++ windows resources libraries wtl

美好的一天,我在应用程序中更改语言时遇到问题。现在我有一些包含一些语言的库,使用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));?我如何构建多语言应用程序,可能需要单独的语言到不同的库而不是将所有语言保存在一个,并根据用户选择加载?

0 个答案:

没有答案