Keys - accelerators and menus

Keys - accelerators and menus

使用 键 - 加速器 和使用菜单项是一样的效果:都会使得窗口发送一条 WM_COMMAND 消息或 WM_SYSCOMMAND 消息给相应的窗口过程函数。WM_COMMAND 消息包含了一个由窗口过程函数检测并依此判断消息来源的描述符(句柄)。如果 WM_COMMAND 消息创建了一个加速器的话,你们该描述符就是这条 按键 - 加速器 的描述符。相似的,如果 WM_COMMAND 消息在一个菜单项中,那么该描述符就是这条菜单项的句柄。因为加速器提供了一个选择菜单命令的快捷键,那么,应用程序通常会给 按键 - 加速器 映射 和 相应的菜单项 分配相同的句柄。

应用程序用完全相同的方法处理按键 - 加速器的 WM_COMMAND 消息 和 该按键-加速器对应的菜单项的 WM_COMMAND。然而,WM_COMMAND 消息包含一个标识符变量 [ flag ] 来判断该消息的是来自加速器还是菜单项。如果是加速器,那么他们应该被区别于菜单项的形式处理。而 WM_SYSCOMMAND 消息不包含该选项。

从 ID 可以判断出这个关键值是否是加速器或 WM_COMMAND 消息 WM_SYSCOMMAND 生成的。如果句柄和系统菜单的菜单项有相同的值,加速器产生一个 WM_SYSCOMMAND 消息。否则,键 - 加速器将产生一个 WM_COMMAND 消息。

如果 键 - 加速器 与菜单有相同的 ID,但该菜单项是不可用或者锁定状态的,那么该 加速器 将被阻止,将不会产生一个 WM_COMMAND 消息或 WM_SYSCOMMAND 消息。即使当相应的窗口被最小化了,键 - 加速器 也会产生一条命令。

当用户使用与菜单项对应的 键 - 加速器时,窗口过程函数将接收到 WM_INITMENUWM_INITMENUPOPUP 消息。就像用户选择了一个菜单项一样。欲了解有关如何处理这些消息的信息,参考文章 .Menu (本书的一章,尚未翻译到)。

与菜单项对应的 键 - 加速器(快捷键)应该在菜单项的文本中给用户提示。

回目录

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值