加速器和菜单

【勇芳软件工作室】汉化HomePreviousNext

使用加速器与选择菜单项相同:两个操作都会导致Windows将WM_COMMANDWM_SYSCOMMAND消息发送到相应的窗口过程。WM_COMMAND消息包括窗口过程检查以确定消息的源的标识符。如果加速器产生了WM_COMMAND消息,则该标识符是加速器的标识符。类似地,如果菜单项生成了WM_COMMAND消息,则标识符是菜单项的标识符。因为加速器提供了从菜单中选择命令的快捷方式,应用程序通常会将相同的标识符分配给加速器和相应的菜单项。

应用程序处理加速器WM_COMMAND消息的方式与相应的菜单项WM_COMMAND消息完全相同。但是,WM_COMMAND消息包含一个标志,指定消息是源自加速器还是菜单项,以防加速器必须与其相应的菜单项不同。WM_SYSCOMMAND消息不包含此标志。

标识符确定加速器是否生成WM_COMMAND或WM_SYSCOMMAND消息。如果标识符与“系统”菜单中的菜单项具有相同的值,则加速器将生成一个WM_SYSCOMMAND消息。否则,加速器将生成WM_COMMAND消息。

如果加速器具有与菜单项相同的标识符,并且菜单项为灰色或禁用,则加速器将被禁用,并且不生成WM_COMMAND或WM_SYSCOMMAND消息。此外,如果对应的窗口最小化,则加速器不会生成命令消息。

当用户使用对应于菜单项的加速器时,窗口过程就像用户选择了菜单项一样接收WM_INITMENUWM_INITMENUPOPUP消息。有关如何处理这些消息的信息,请参阅菜单.

与菜单项对应的加速器应包含在菜单项的文本中。