我正在使用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
但无法获取确切的语言名称。