当快捷键与系统菜单中的菜单项相对应时,TranslateAccelerator给窗口消息处理程序发送一个WM_SYSCOMMAND消息,否则,TranslateAccelerator给窗口消息处理程序发送一个WM_COMMAND消息。下表所示为几种可能接收到的WM_COMMAND消息,这些消息用于快捷键、菜单命令以及子窗口控件:
表10-3
快捷键
菜单
控件
LOWORD (wParam)
快捷键ID
菜单ID
控件ID
HIWORD (wParam)
1
0
通知码
lParam
0
0
子窗口句柄
如果快捷键与一个菜单项对应,那么窗口消息处理程序还会收到WM_INITMENU、WM_INITMENUPOPUP和WM_MENUSELECT消息,就好像选中了菜单选项一样。在处理WM_INITMENUPOPUP时,程序往往启用和禁用弹出式菜单中的菜单项,因此,在使用快捷键时,您仍然能够实作这类功能。如果快捷键与一个禁用或者无效化的菜单项相对应,那么,TranslateAccelerator函数就不会向窗口消息处理程序发送WM_COMMAND或WM_SYSCOMMAND消息。
如果活动窗口已经被最小化,那么TranslateAccelerator将为与启用的系统菜单项相对应的快捷键向窗口消息处理程序发送WM_SYSCOMMAND消息,而不是WM_COMMAND消息。TranslateAccelerator也会为没有任何菜单项与之对应的快捷键,来向窗口消息处理程序发送WM_COMMAND消息。