Accelerator table

Accelerator table 快捷键表

表 键-加速器(快捷键表)包含了一组 ACCEL 结构,每一个定义了一项特定的加速器。每个 ACCEL 结构体包含以下信息。

一个按键组合—快捷键。
加速器的定义。
各种标志位。这些标志位包括 当加速器被使用时 Windows 是否提供可视反馈,高亮菜单栏项目如果它可用的话。
为了在给定的流中处理按键—加速器的对应,开发者必须在一个与线程消息队列相关的循环体中调用 TranslateAccelerator 函数,来检测当前的按键组合是否在快捷键表中存在。当 TranslateAccelerator 找到一个符合的项,它将获取一个 WM_COMMAND WM_SYSCOMMAND 消息中的键盘输入(例如,WM_KEYUP WM_KEYDOWN)。然后把该消息传递给特定窗口的窗口过程函数[window procedure的更好翻译]

WM_COMMAND 消息包含一个特定的使得 TranslateAccelerator 产生消息的标识符快捷键,窗口过程函数通过检测该标识符来判定消息的来源,然后作出相应的处理。

在 Windows 系统中,快捷键表存在于两个不同的层次上。Windows 支持一种单一的,系统层级的快捷键表,可以被所有应用程序使用。任何应用程序不能修改系统快捷键表。作为一个键-加速器的表述,快捷键表由系统提供,参考文章 Destination keystrokes - accelerators(译文Assigning keystrokes - accelerator)。

Windows 系统同样支持每个应用程序的快捷键表。应用程序可以在他们自己的窗口中定义任意数量的有效的快捷键表。每个快捷键表由一个独一无二的32位描述符(HACCEL)标识。然而,对于一个给定的线程,同一时刻只有一个快捷键表是有效的。在线程中,把快捷键表标识符传递到 TranslateAccelerator 函数中,来判定哪个快捷键表是激活的。激活的快捷键表会在任意时刻通过传递另一个相应的快捷键表的标识符到TranslateAccelerator 函数中的方式被覆盖。

回目录

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值