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

Winapi 使用Win API从Win XP操作系统检索键盘布局的语言名称,winapi,mfc,Winapi,Mfc,我正在WinXP上使用VC6开发一个应用程序。 要从系统中检索默认输入语言列表,请使用GetKeyBoardLayoutList()和GetLocalInfo()API 下面是代码 `UINT uLayouts; char szBuf[512]; HKL *lpList = NULL; uLayouts = GetKeyboardLayoutList(0, NULL); lpList = (HKL*)LocalAlloc(LPTR, (uLayouts * sizeof(HKL)));

我正在WinXP上使用VC6开发一个应用程序。 要从系统中检索默认输入语言列表,请使用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);
}`
`UINT-uLayouts;
char-szBuf[512];
HKL*lpList=NULL;
uLayouts=GetKeyboardLayoutList(0,空);
lpList=(HKL*)本地分配(LPTR,(uLayouts*sizeof(HKL));
uLayouts=GetKeyboardLayoutList(uLayouts,lpList);
对于(UINT i=0;i
在szBuf中,我得到的输入语言名称是“英语(美国)”,而操作系统中的actaul名称是“英语(美国)-US”

我们如何获得操作系统中输入语言的确切名称? 我们尝试使用不同的旗帜,比如

语言环境(英语)

语言环境,俚语,语言环境,语言国家,语言环境,语言环境,语言环境,语言环境,语言环境,语言环境,语言环境,语言环境,语言名称,语言环境

但是,无法获取准确的语言名称。

请使用以下方法:

 LOCALE_IMEASURE // 0 = metric, 1 = US

你认为你的语言是“英语(美国)-美国”吗?我看不到任何具有该名称的键盘布局。我只能看到“英语(美国)”。WinXP系统:控制面板->区域和语言选项->语言->文本服务(详细信息按钮)->设置->默认输入语言框。在上面的路径上,我们可以看到“英语(美国)-美国”。这究竟是如何回答这个问题的
LOCALE\u IMEASURE
提供特定场所使用的测量系统的相关信息。它没有提到任何关于“输入语言”的问题,而这正是问题所要问的。