TranslateAccelerator

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

函式功能

翻譯加速鍵表。該函式處理選單命令中的加速鍵。該函式將一個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兩種版本。

相關詞條

相關搜尋

熱門詞條

聯絡我們