|
的第二个参数为NULL时,函式会找寻应用程式所有视窗的讯息。当GetMessage传回时,msg结构的hwnd是将要获得讯息之视窗的视窗代号。然而,当TranslateAccelerator把键盘讯息转换为WM_COMMAND或WM_SYSCOMMAND讯息时,它使用函式的第一个参数指定的视窗代号hwnd来代替视窗代号msg.hwnd。Windows就是这样把所有加速键讯息发送给同一视窗讯息处理程式的,即使另一个应用视窗目前拥有输入焦点。当系统模态对话方块或者讯息方块拥有输入焦点时,TranslateAccelerator不会转换键盘讯息,因为这些视窗的讯息是不经过程式的讯息回圈的。
在某些情况下,当您程式的另一个视窗(比如一个非系统模态对话方块)拥有输入焦点时,您也许不想转换加速键。您将在下一章中看到如何处理这种情况。
接收加速键讯息
当加速键与系统功能表中的功能表项相对应时,TranslateAccelerator给视窗讯息处理程式发送一个WM_SYSCOMMAND讯息,否则,TranslateAccelerator给视窗讯息处理程式发送一个WM_COMMAND讯息。下表所示为几种可能接收到的WM_COMMAND讯息,这些讯息用於加速键、功能表命令以及子视窗控制项:
|