A 【语言】是一种自然语言,如英语,法语和日语。A 【语言环境】是在特定地理区域使用的自然语言的变体,例如在英国和美国使用的英语子语言。基于Win32的应用程序使用名为【语言环境】的值来唯一标识语言和子语言。应用程序通常使用区域设置来设置处理输入和输出的语言。例如,设置键盘的区域设置会影响键盘生成的字符值。设置显示器或打印机的区域设置会影响显示或打印的字形。应用程序通过加载和使用键盘布局来设置键盘的区域设置。他们通过选择支持给定语言环境的字体来设置显示器或打印机的区域设置。
键盘布局不仅指定键盘上的键的物理位置,还可以确定通过按这些键生成的字符值。每个布局都有一个相关的区域设置,用于标识当前的输入语言,并确定哪些字符值由哪些键和键组合生成。
每个键盘布局都有一个对应的句柄来标识布局和语言。句柄的低字是语言标识符。高字是设备句柄,指定物理布局,或为零,表示默认的物理布局。用户可以将任何输入语言与给定的物理布局相关联。例如,非常偶尔用法语工作的说英语的用户可以将键盘的输入语言设置为法语,而不改变键盘的物理布局。这意味着用户可以使用熟悉的英文版本输入法语文本。
应用程序通常不会直接操纵输入语言。相反,用户设置语言和布局组合,然后在它们之间切换。当用户点击以不同语言标记的文本时,应用程序将调用ActivateKeyboardLayout功能来激活该语言的用户默认布局。如果用户使用不在活动列表中的语言编辑文本,则应用程序可以使用该语言调用LoadKeyboardLayout函数以根据该语言获取布局。
ActivateKeyboardLayout函数设置当前任务的输入语言。【HKL】参数可以是键盘布局的句柄或零扩展语言标识符。键盘布局手柄可以从LoadKeyboardLayout或GetKeyboardLayoutList功能获得。HKL_NEXT和HKL_PREV值也可用于选择下一个或上一个键盘。对于某些操作系统,KLF_UNLOADPREVIOUS值没有任何意义,被忽略。
GetKeyboardLayoutName函数检索调用线程的活动键盘布局的名称。如果应用程序使用LoadKeyboardLayout函数创建活动布局,GetKeyboardLayoutName将检索用于创建布局的相同字符串。否则,字符串是与活动布局的区域设置相对应的主要语言标识符。这意味着功能可能不一定会在具有相同主要语言的不同布局之间进行区分,因此无法返回有关输入语言的特定信息。然而,GetKeyboardLayout功能可用于确定输入语言。
LoadKeyboardLayout功能加载键盘布局,并使用户可以使用布局。应用程序可以通过使用KLF_ACTIVATE值使布局立即激活当前线程。应用程序可以使用KLF_REORDER值重新排列布局,而不必指定KLF_ACTIVATE值。加载键盘布局时,应用程序应始终使用KLF_SUBSTITUTE_OK值,以确保选择用户的首选项(如果有)。对于某些操作系统,KLF_UNLOADPREVIOUS值将被忽略。
对于多语言支持,LoadKeyboardLayout功能提供KLF_REPLACELANG和KLF_NOTELLSHELL标志。enKLF_REPLACELANG标志指示功能替换现有的键盘布局,而不更改语言。尝试使用相同的语言标识符替换现有的布局,但不指定KLF_REPLACELANG是一个错误。当添加或更换键盘布局时,KLF_NOTELLSHELL标志会阻止该函数通知外壳。这对于在连续的一系列调用中添加多个布局的应用程序非常有用。除了最后一个电话之外,这个标志应该被使用。
UnloadKeyboardLayout功能受限于无法卸载系统默认输入语言。这确保用户总是具有可用于使用与shell和文件系统使用的相同字符集输入文本的一个布局。