使用win API从Win XP OS检索键盘布局的语言名称

时间:2012-09-11 07:20:21

标签: winapi mfc

我正在使用WIn XP上的VC6开发应用程序。 要从系统检索默认输入语言列表,请使用GetKeyBoardLayoutList()和GetLocalInfo()API。

Follwoing是代码。

`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中,我输入的语言名称为“English(United States)”,其中OS中的actaul名称为“English(United States) - US”

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

  

LOCALE_SENGLANGUAGE //英文

     

LOCALE_ILANGUAGE,LOCALE_SLANGUAGE,LOCALE_ICOUNTRY,LOCALE_SABBREVLANGNAME,LOCALE_SNATIVELANGNAME,LOCALE_SABBREVCTRYNAME,LOCALE_SNATIVECTRYNAME

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

1 个答案:

答案 0 :(得分:2)

使用它:

 LOCALE_IMEASURE // 0 = metric, 1 = US