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