什么是键盘加速键?
加速键是产生WM_COMMAND消息(有些情况下是WM_SYSCOMMAND)的键组合。许多时候,程序使用加速键来重复常用菜单项的动作(然 而,加速键还可以用于运行非菜单功能)。例如,许多Windows程序都有一个包含“Delete”或“Clear”选项的“Edit”菜单,这些程序习 惯上都将Del键指定为该选项的加速键。使用者可以通过“ Alt 键”从菜单中选择“ Delete ”选项,或者只需按下加速键 Del 。当窗口消息处理程序收到一个WM_COMMAND消息时,它不必确定使用的是菜单还是加速键。
为什么要使用加速键?
您也许会问:为什么我应该使用加速键?为什么不能直接拦截WM_KEYDOWN或WM_CHAR消息而自己实现同样的菜单功能呢?好处又在哪里呢?对于一 个单窗口应用程序,您当然可以拦截键盘消息,但是使用加速键可以得到一些好处:您不需要把菜单和加速键的处理方式重写一遍。
对于有多个窗口和多个窗口消息处理程序的应用程序来说,加速键是非常重要的。正如我们所看到的,Windows将键盘消息发送给目前活动窗口的窗口 消息处理程序。然而对于加速键, Windows把WM_COMMAND消息发送给窗口消息处理程序,该窗口消息处理程序的代号在Windows函数 TranslateAccelerator中给出。通常这是主窗口,也是拥有菜单的窗口,这意味着无须每个窗口消息处理程序都把加速键的操作处理程序重写 一遍。
如果您在主窗口的显示区域中,使用了非系统模态对话框(在下一章中会讨论)或者子窗口,那么这种好处就变得非常重要。如果定义一个特定的加速键以便 在不同的窗口之间移动,那么,只需要一个窗口消息处理程序有这个处理程序。子窗口就不会收到加速键引发的WM_COMMAND消息。