开发环境
系统:win10 x64
VS版本:VS2010 旗舰版
问题
MFC程序因为使用SetThreadUILanguage函数,导致程序界面异常。
解决方法
1、在InitInstance()例程中添加下列代码。
switch (m_nLanguageSel)
{
case CHINESE_SIMPLIFIED:m_wLanguageId = MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED);break;case ENGLISH_US:m_wLanguageId = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);break;
}if (GetWindowsType() == WINDOWS_XP)
{SetThreadLocale(MAKELCID(m_wLanguageId, SORT_DEFAULT));
}
else
{SetThreadUILanguage(MAKELCID(m_wLanguageId, SORT_DEFAULT));
}
2、GetWindowType()函数
//□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□//
//描述:获取操作系统类型
//参数:
//□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□//
BOOL GetWindowsType()
{OSVERSIONINFOEX osvi;BOOL bOsVersionInfoEx;ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO*) &osvi);//win7系统版本为NET6.1if((osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) && (osvi.dwMajorVersion >= 6) && (osvi.dwMinorVersion) >= 0){return WINDOWS_7_10;}else{return WINDOWS_XP;}
}