平台 SDK: Windows 用户接口

ActivateKeyboardLayout

ActivateKeyboardLayout函数设置调用线程或当前进程的输入区域设置标识符(以前称为键盘布局句柄)。 输入区域设置标识符指定一个区域设置以及键盘的物理布局。

HKL ActivateKeyboardLayout(
  HKL hkl,     // 输入区域设置标识符
  UINT Flags   // 输入区域设置标识符选项
);

参数

  • hkl

  • [in] 输入要激活的区域设置标识符。

    Windows 95/98/Me: 该参数可以使用LoadKeyboardLayout或GetKeyboardLayoutList获得,也可以是下表中的值之一。

    Windows NT/2000/XP: 输入区域设置标识符必须由LoadKeyboardLayout函数先前调用加载。 此参数必须是键盘布局的句柄或以下值之一。

    含义
    HKL_NEXT在系统维护的加载的区域设置标识符的循环列表中选择下一个区域设置标识符。
    HKL_PREV在系统维护的加载的区域设置标识符的循环列表中选择先前的区域设置标识符。



  • Flags

  • [in] 指定如何激活输入区域设置标识符。 此参数可以是以下值之一。

    含义
    KLF_REORDER如果设置了该位,则通过将区域设置标识符移动到列表的头部来重新排序加载的区域设置标识符的循环列表。 如果该位未设置,则列表将被旋转而不改变顺序。

    例如,如果用户的英文区域设置标识符处于活动状态,并且加载了法语,德语和西班牙语区域设置标识符(按此顺序),则使用KLF_REORDER位来激活德语区域设置标识符将产生以下顺序:德语 ,英文,法文,西班牙文。 激活德语区域设置标识符,而不设置KLF_REORDER位将产生以下顺序:德语,西班牙语,英语,法语。

    如果加载少于三个区域设置标识符,则该标志的值不相关。

    KLF_RESETWindows 2000/XP: 如果设置但KLF_SHIFTLOCK未设置,则通过再次按Caps Lock键关闭Caps Lock状态。 如果设置和KLF_SHIFTLOCK也被设置,按下SHIFT键关闭Caps Lock状态。

    这两种方法是相互排斥的,设置在注册表中作为用户配置文件的一部分而持续存在。

    KLF_SETFORPROCESSWindows 2000/XP: 激活整个进程的指定区域设置标识符,并将WM_INPUTLANGCHANGE消息发送到当前线程的“焦点”或“活动”窗口。
    KLF_SHIFTLOCKWindows 2000/XP: 这是使用KLF_RESET。见KLF_RESET一个解释。
    KLF_UNLOADPREVIOUS此标志不受支持。 请改用UnloadKeyboardLayout函数。


返回值

Windows NT 3.51及更早版本: 返回值的类型为BOOL。 如果函数成功,则为非零值。 如果函数失败,则为零。

Windows 95/98,Windows NT 4.0及更高版本: 返回值的类型为HKL。 如果函数成功,则返回值是先前输入的区域设置标识符。 否则为零。

要获取扩展错误信息,请使用GetLastError函数。

备注


此函数仅影响当前进程或线程的布局。

此功能不限于键盘布局。 hkl参数实际上是一个输入区域设置标识符。 这是比键盘布局更广泛的概念,因为它还可以包含语音到文本转换器,IME或任何其他形式的输入。 可以在任何一个时间加载多个输入区域设置标识符,但一次只能启用一个。 加载多个输入区域设置标识符可以在它们之间快速切换。

Windows 95/98/Me: 应用程序可以通过将高字设置为零并将低字设置为区域设置标识来创建有效的输入区域设置标识符。 使用这样的输入区域设置标识符可以改变输入语言,而不会影响物理布局。

当每个区域设置允许多个输入法编辑器(IME)时,传递其中高字(设备句柄)为零的输入区域设置标识符激活属于本地区的列表中的第一个IME。

Windows 2000/XP: KLF_RESET和KLF_SHIFTLOCK标志改变了Caps Lock状态关闭的方法。 默认情况下,通过再次按下Caps Lock键可以关闭Caps Lock状态。 如果只设置KLF_RESET,则重新建立默认状态。 如果设置了KLF_RESET和KLF_SHIFTLOCK,则按Caps Lock键可以关闭Caps Lock状态。 此功能用于符合本地键盘行为标准以及个人喜好。

要求

  Windows NT/2000/XP: 包含在Windows NT 3.1及更高版本中。

  Windows 95/98/Me: 包含在Windows 95及更高版本中。

  头文件: 声明于 Winuser.h; 包含于Windows.h.
  库: 使用 User32.lib.