更改显示语言后,查找所选语言LCID

时间:2015-04-27 21:23:06

标签: windows winapi windows-7

我有一台安装了多种语言的Windows 7计算机    控制面板    地区和语言    键盘和语言    安装/卸载语言

使用时更改显示语言    控制面板    地区和语言    键盘和语言    选择显示语言 一切都正确显示。

我需要阅读选择了哪种语言。 我发现的注册表项都指向原始语言(0409)英语 - 美国不是所选语言(0404)中文 - 台湾。

有谁知道如何找到所选语言LCID? 如果我能得到LCID,我可以显示用英语选择的语言(这是我的最终目标)。

1 个答案:

答案 0 :(得分:1)

编辑:

正如Mark Ransom建议的那样,您可以使用GetUserDefaultLCID

int wmain()
{
    LCID lcid = GetUserDefaultLCID();//LOCALE_USER_DEFAULT;
    cout << "lcid: " << lcid << endl;
    wchar_t buf[100];
    if (GetLocaleInfo(lcid, LOCALE_ILANGUAGE, buf, 100)) wcout << buf << endl;
    if (GetLocaleInfo(lcid, LOCALE_SENGLANGUAGE, buf, 100)) wcout << buf << endl;
    if (GetLocaleInfo(lcid, LOCALE_SISO639LANGNAME, buf, 100)) wcout << buf << endl;
    return 0;
}
在我的Windows 8上输出

lcid: 1028
0404
Chinese (Traditional)
zh

此外,如果用户在程序运行过程中更改了系统语言,则会向应用程序发送WM_INPUTLANGCHANGE消息:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms632629%28v=vs.85%29.aspx