开发环境
系统: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.1
if((osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) && (osvi.dwMajorVersion >= 6) && (osvi.dwMinorVersion) >= 0)
{
return WINDOWS_7_10;
}
else
{
return WINDOWS_XP;
}
}
来源:CSDN
作者:sunriver2000
链接:https://blog.csdn.net/sunriver2000/article/details/104007707