加速器表

【勇芳软件工作室】汉化HomePreviousNext

一个【加速器表】由一组ACCEL结构组成,每个结构都定义一个单独的加速器。每个ACCEL结构包括以下信息:

加速器的击键组合。

加速器的标识符。

*各种标志。这包括一个指定Windows是否通过突出显示相应的菜单项(如果有的话)提供可视化反馈,当使用加速器时

要处理给定线程的加速按键,开发人员必须在与线程的消息队列相关联的消息循环中调用TranslateAccelerator函数。TranslateAccelerator功能可监视消息队列的键盘输入,检查与加速表中的条目相匹配的组合键。当TranslateAccelerator找到匹配项时,它会将键盘输入(即WM_KEYUPWM_KEYDOWN消息)转换为WM_COMMANDWM_SYSCOMMAND消息,然后将消息发送到指定窗口的窗口过程。下图显示了加速器的处理方式。

WM_COMMAND消息包括导致TranslateAccelerator生成消息的加速器的标识符。窗口过程检查标识符以确定消息的来源,然后相应地处理消息。

加速器表存在于Windows中的两个不同级别。Windows维护一个适用于所有应用程序的单个系统级加速表。应用程序无法修改系统加速器表。有关系统加速器表提供的加速器的说明,请参阅加速键击分配.

Windows还为每个应用程序维护加速器表。应用程序可以定义任何数量的加速器表,以便与其自己的窗口一起使用。唯一的32位句柄(HACCEL)标识每个表。但是,对于给定的线程,一次只能有一个加速器表处于活动状态。传递给TranslateAccelerator函数的加速器表的句柄确定线程处于哪个加速表。可以随时通过将不同的加速器表句柄传递给TranslateAccelerator来更改主动加速器表。