第十章 菜单及其它资源part4

键盘快捷键

快捷键是产生WM_COMMAND消息(有些情况下是WM_SYSCOMMAND)的键组合。

 

为什么要使用快捷键

Windows将键盘消息发送给目前活动窗口的窗口消息处理程序。然而对于快捷键,Windows把WM_COMMAND消息发送给窗口消息处理程序.该窗口消息处理程序的句柄在Windows函数TranslateAccelerator中给出快捷键中,应该避免使用Tab、Enter、Esc和Spacebar键,因为这些键常常用于完成系统功能。

 

快捷键表的加载

使用LoadAccelerators函数把快捷键表加载内存,并获得该表的句柄。

LoadAccelerators叙述非常类似于LoadIcon、LoadCursor和LoadMenu叙述。

HANDLE hAccel ;

hAccel = LoadAccelerators (hInstance, TEXT ("MyAccelerators")) ;

 

键盘代码转换

下面代码的修改是为了方便使用快捷键

while  (GetMessage (&msg, NULL, 0, 0)) {

  if (!TranslateAccelerator (hwnd, hAccel, &msg)) {

      TranslateMessage(&msg);

      DispatchMessage(&msg);

  }

}

TranslateAccelerator函数确认存放在msg消息结构中的消息是否为键盘消息。如果是,该函数将找寻句柄为hAccel的快捷键表。如果找到了一个符合的,则呼叫句柄为hwnd的窗口消息处理程序。如果快捷键ID与系统菜单的菜单项一致,则消息就是WM_SYSCOMMAND;否则,消息为WM_COMMAND。

 

快捷键表  

当您为菜单项定义快捷键时,应该将键的组合包含到菜单项的文字中。制表符(/t)将文字与快捷键分割开,将快捷键列在第二列。

如果活动窗口已经被最小化,那么TranslateAccelerator将为与启用的系统菜单项相对应的快捷键向窗口消息处理程序发送WM_SYSCOMMAND消息, 而不是WM_COMMAND消息。

PopPad2.rc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值