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