TranslateAcceleratorA 函式 (winuser.h)
處理功能表命令的快速鍵。 函式會將 WM_KEYDOWN 或 WM_SYSKEYDOWN 訊息轉譯為 WM_COMMAND 或 WM_SYSCOMMAND 訊息(如果指定的快速鍵數據表中有索引鍵的專案),然後將 WM_COMMAND 或 WM_SYSCOMMAND 訊息直接傳送至指定的視窗程式。 TranslateAccelerator 在視窗程式處理訊息之前不會傳回。
語法
int TranslateAcceleratorA(
[in] HWND hWnd,
[in] HACCEL hAccTable,
[in] LPMSG lpMsg
);
參數
[in] hWnd
類型:HWND
要轉譯訊息的視窗句柄。
[in] hAccTable
類型:HACCEL
快速鍵數據表的句柄。 快捷鍵數據表必須由呼叫 LoadAccelerators 函式或 呼叫 createAcceleratorTable 函式所建立的呼叫來載入。
[in] lpMsg
類型:LPMSG
MSG 結構的指標,其中包含使用 getMessage 或 PeekMessage 函式從呼叫線程消息佇列擷取的訊息資訊。
傳回值
類型:int
如果函式成功,則傳回值為非零值。
如果函式失敗,傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
言論
為了區分此函式從功能表或控件傳送的訊息,wParam 參數的高階字組 WM_COMMAND 或 WM_SYSCOMMAND 訊息包含值 1。
用來從 [] 視窗選取專案的快捷鍵組合, 菜單會轉譯成 WM_SYSCOMMAND 訊息;所有其他快捷鍵組合都會轉譯成 WM_COMMAND 訊息。
當 TranslateAccelerator 傳回非零值並轉譯訊息時,應用程式不應該使用 TranslateMessage 函式再次處理訊息。
快速鍵不需要對應至功能表命令。
如果快捷鍵命令對應至功能表項,應用程式就會傳送 WM_INITMENU 和 WM_INITMENUPOPUP 訊息,就像使用者嘗試顯示功能表一樣。 不過,如果下列任何條件存在,則不會傳送這些訊息:
- 視窗已停用。
- 快速鍵組合不會對應至 視窗 功能表上的專案,而且視窗最小化。
- 滑鼠擷取生效。 如需滑鼠擷取的相關信息,請參閱 SetCapture 函式。
如果快捷鍵擊發生在最小化擁有功能表的視窗時對應至功能表項,TranslateAccelerator 不會傳送 WM_COMMAND 訊息。 不過,如果快捷鍵擊發生不符合視窗功能表或 視窗中任何專案 功能表的專案,則函式會傳送 WM_COMMAND 訊息,即使視窗最小化也一樣。
例子
如需範例,請參閱 建立字型屬性的快捷鍵。
注意
winuser.h 標頭會將 TranslateAccelerator 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | winuser.h (包括 Windows.h) |
連結庫 | User32.lib |
DLL | User32.dll |
另請參閱
概念
參考