三、Windows键盘快捷键—接收快捷键消息
当快捷键与系统菜单中的菜单项相对应时,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消息。
