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

Find selected language LCID after changing display language

我有一台 Windows 7 机器,它安装了多种语言,使用 控制面板 地区和语言 键盘和语言 Install/Uninstall 种语言

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

我需要阅读已选择的语言。 我找到的注册表项都指向原始语言(0409) English - United States 而不是所选语言(0404) Chinese - Taiwan.

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

编辑:

正如 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