使用winneneneba API从WinXPOS检索键盘布局的语言名称



我正在WIn XP上使用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);
}`

在szBuf中,我得到的输入语言名称为";英语(美国)";其中OS中的实际名称是";英语(美国)-美国";

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

LOCALE_SENGLANGUAGE//英文

LOCALE_ILANGUAGE、LOCALE_slalanguage、LOCALE_icocountry、LOCALE_SABBREVLANGNAME、LOCALE_snactivelangname、LOCALE_SABBREVCTRYNAME、local_SNATIVECTRYNAME

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

使用这个:

 LOCALE_IMEASURE // 0 = metric, 1 = US

最新更新