从Win XP操作系统中使用win API检索键盘布局的语言名称

3

我正在使用VC6在Win XP上开发一个应用程序。 为了从系统中检索默认输入语言列表,使用了GetKeyBoardLayoutList()和GetLocalInfo() API。

以下是代码。

`UINT uLayouts; 
char szBuf[512];
HKL  *lpList = NULL;
uLayouts = GetKeyboardLayoutList(0, NULL);
lpList   = (HKL*)LocalAlloc(LPTR, (uLayouts * sizeof(HKL)));
uLayouts = GetKeyboardLayoutList(uLayouts, lpList);
for(UINT i = 0; i < uLayouts; i++)
{
    DWORD temp = (UINT)lpList[i] & 0xffffffff;
    GetLocaleInfo(MAKELCID(temp,SORT_DEFAULT), LOCALE_SLANGUAGE , szBuf, 512);
}`

我在szBuf中得到的输入语言名称是"英语(美国)",而在操作系统中实际名称为"英语(美国)- 美国"。

如何获取操作系统中输入语言的确切名称? 我们尝试使用不同的标志,如:

LOCALE_SENGLANGUAGE //英语

LOCALE_ILANGUAGE、LOCALE_SLANGUAGE、LOCALE_ICOUNTRY、LOCALE_SABBREVLANGNAME、LOCALE_SNATIVELANGNAME、LOCALE_SABBREVCTRYNAME、LOCALE_SNATIVECTRYNAME

但无法获取确切的语言名称。


你在哪里看到你的语言是“英语(美国)- 美国”?我没有看到任何名为该名称的键盘布局。我只能看到“英语(美国)”。 - Venkatesh Kumar
WinXP系统:控制面板 -> 区域和语言选项 -> 语言 -> 文本服务(详细信息按钮)-> 设置 -> 默认输入语言框。 在上述路径中,我们可以看到“英语(美国)-美国”。 - Ajay Shinde
1个回答

2

使用这个:

 LOCALE_IMEASURE // 0 = metric, 1 = US

1
这怎么回答问题了呢?LOCALE_IMEASURE提供有关特定语言环境使用的测量系统的信息。它并没有涉及“输入语言”,而这才是问题所问的。 - Cody Gray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接