TranslateAccelerator

TranslateAccelerator

TranslateAccelerator
TranslateAccelerator ,該函數處理菜單命令中的加速鍵。該函數将一個WM-DEYDOUN或WM-SYSDEYDOWN消息翻譯或一個WM-COMMAND或WM-SYSCOMMAND消息(如果在給定的加速鍵表中有該鍵的入口),然後将WM-COMMAND或WM-SYSCOMMAND消息直接送到相應的窗口處理過程。
  • 外文名:TranslateAccelerator

函數功能

翻譯加速鍵表。該函數處理菜單命令中的加速鍵。該函數将一個WM-DEYDOUN或WM-SYSDEYDOWN消息翻譯或一個WM-COMMAND或WM-SYSCOMMAND消息(如果在給定的加速鍵表中有該鍵的入口),然後将WM-COMMAND或WM-SYSCOMMAND消息直接送到相應的窗口處理過程。

TranslateAccelerator直到窗口過程處理完消息後才返回。

函數原型

int TranslateAccelerator(HWND hWnd,HACCEL hAccTable,LPMSG Ipmsg);

主要參數

hWnd:窗口句柄,該窗口的消息将被翻譯。

hAccTable:加速鍵表句柄。加速鍵表必須由LoadAccelerators函數調用裝入或由CreateAccd_eratorTable函數調用創建。

LpMsg:MSG結構指針,MSG結構中包含了從使用GetMessage或PeekMessage函數調用線程消息隊列中得到的消息内容。

返回值:若函數調用成功,則返回非零值;若函數調用失敗,則返回值為零。若要獲得更多的錯誤信息,可調用GetLastError函數。

備注:為了将該函數發送的消息與菜單或控制發送的消息區别開來,使WM_COMMAND或WM_SYSCOMMAND消息的wParam參數的高位字值為1。用于從窗口菜單中選擇菜單項的加速鍵組合被翻譯成WM-SYSCOMMAND消息:所有其他的加速鍵組合被翻譯成WM-COMMAND。若TransLateAccelerator返回非零值且消息已被翻譯,應用程序就不能調用TranslateMessage函數對消息再做處理。每個加速鍵不一定都對應于菜單命令。若加速鍵命令對應于菜單項,則WM-INITMEMU和WM-INITMENUPOPUP消息将被發送到應用程序,就好像用戶正試圖顯示該菜單。然而,如下的任一條件成立時,這些消息将不被發送:窗口被禁止,菜單項被禁止。

加速鍵組合無相應的窗口菜單項且窗口己被最小化。鼠标抓取有效。有關鼠标抓取消息,參看SetCapture函數。若指定的窗口為活動窗口且窗口無鍵盤焦點(當窗口最小化時一般是這種情況),TranslatMssage翻譯WM-SYSDEYUP和WM-SYSKEYDOWN消息而不是WM-DEYUP和WM-DEYDOWN消息。

當按下相應于某菜單項的加速鍵,而包含該菜單的窗口又已被最小化時,TranslateMessage不發送WM-COMMAND消息。但是,若按下與窗口菜單或某單項的任一項均不對應的加速鍵時,TranslateMessage将發送一WM-COMMAND消息,即使窗口己被最小化。

Windows CE:所有的加速鍵消息被翻譯成WM-COMMAND消息;Windows CE不支持WM-SYSCOMMAND消息。

速查:Windows NT:3.1 及以上版本;Windows:95及以上版本:Windows CE:1.0及以上版本;頭文件:windows.h;庫文件:user32.lib; Unicode:在Windows NT實現為Unicode和ANSI兩種版本。

相關詞條

相關搜索

其它詞條