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