3

我正在 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 中,我将输入语言名称设为“英语(美国)”,而操作系统中的实际名称为“英语(美国)-美国”

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

LOCALE_SENGLANGUAGE //英语

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

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

4

1 回答 1

2

用这个:

 LOCALE_IMEASURE // 0 = metric, 1 = US
于 2012-11-29T07:52:22.113 回答