關於熱鍵控件

作用中的按鍵控制項是一個視窗,可讓使用者輸入按鍵的組合,以做為熱鍵。 快速鍵是使用者可以按下以快速執行動作的按鍵組合。 例如,使用者可以建立熱鍵來啟動指定的視窗,並將它帶到迭置順序的頂端。 熱鍵控制項會顯示使用者的選擇,並確保用戶選取有效的按鍵組合。 下列螢幕快照顯示使用者按下 Alt 鍵之後,熱鍵控件在對話框中顯示的方式。

screen shot of a dialog box that contains a hot key control

使用熱鍵控制件

當使用者輸入要當做熱鍵的按鍵組合時,索引鍵的名稱會出現在作用鍵控件中。 按鍵組合可以包含輔助按鍵(例如 CTRL、ALT 或 SHIFT),以及隨附的按鍵(例如字元鍵、箭頭鍵、函式按鍵等等)。

在使用者選擇按鍵組合之後,應用程式會從熱鍵控件擷取按鍵組合,並用它來在系統中設定熱鍵。 從熱鍵控件擷取的資訊包含旗標,指出隨附密鑰的修飾詞索引鍵和虛擬密鑰碼。

應用程式可以使用熱鍵控制項提供的資訊來設定全域熱鍵或線程特定的熱鍵。 全域熱鍵與特定視窗相關聯;它可讓使用者從系統的任何部分啟動視窗。 應用程式會使用 WM_SETHOTKEY 訊息來設定全域熱鍵。 每當使用者按下全域熱鍵時,WM_SETHOTKEY中指定的視窗就會收到指定SC_HOTKEY值的WM_SYSCOMMAND訊息。 此訊息會啟動接收它的視窗。 在呼叫 WM_SETHOTKEY 的應用程式結束之前,熱鍵會維持有效狀態。

線程特定的熱鍵會產生WM_HOTKEY訊息,該訊息會張貼至特定線程的開頭,以便由訊息迴圈的下一個反覆項目移除。 應用程式會使用 RegisterHotKey 函式來設定線程特定的熱鍵

熱鍵控制訊息

建立熱鍵控件之後,應用程式會使用三則訊息與其互動:HKM_SETRULESHKM_SETHOTKEYHKM_GETHOTKEY。

應用程式可以傳送 HKM_SETRULES 訊息,以指定一組 CTRL、ALT 和 SHIFT 鍵組合,這些組合被視為無效的快速鍵。 如果應用程式指定了無效的按鍵組合,則也應該指定用戶選取無效組合時要使用的預設修飾詞組合。 當使用者輸入無效的組合時,系統會對無效的組合和預設組合執行邏輯 OR 作業。 結果會視為有效的組合;它會轉換成字串,並顯示在控件中。

HKM_SETHOTKEY訊息可讓應用程式設定熱鍵控制件的快捷鍵組合。 建立熱鍵控件時,通常也會使用此訊息。

應用程式會 使用HKM_GETHOTKEY 訊息來擷取使用者所選熱鍵的虛擬密鑰程式代碼和修飾詞旗標。

熱鍵控制通知

熱鍵控件不會透過 WM_NOTIFY 訊息傳送任何通知碼。 不過,當使用者變更控件的內容時,會透過WM_COMMAND訊息傳送EN_CHANGE通知。

默認熱鍵訊息處理

本節描述用於作用中索引鍵控件之預先定義 HOTKEY_CLASS 視窗類別之視窗程式所處理的視窗訊息。

訊息 已執行處理
WM_CHAR 擷取虛擬金鑰程式代碼。
WM_CREATE 初始化熱鍵控件、清除任何熱鍵規則,並使用系統字型。
WM_ERASEBKGND 隱藏插入號、呼叫 DefWindowProc 函式,並再次顯示插入號。
WM_GETDLGCODE 傳回DLGC_WANTCHARSDLGC_WANTARROWS值的組合。
WM_GETFONT 擷取字型。
WM_KEYDOWN 如果索引鍵為 ENTER、TAB、SPACE BAR、DEL、ESC 或 BACKSPACE,則呼叫 DefWindowProc 函式。 如果按鍵是 SHIFT、CTRL 或 ALT,它會檢查組合是否有效,如果有效,則會使用組合來設定熱鍵。 所有其他金鑰都會設定為熱鍵,而不會先檢查其有效性。
WM_KEYUP 擷取虛擬金鑰程式代碼。
WM_KILLFOCUS 終結插入號。
WM_LBUTTONDOWN 將焦點設定為視窗。
WM_NCCREATE 設定WS_EX_CLIENTEDGE視窗樣式。
WM_PAINT 小畫家 快捷鍵控制件。
WM_SETFOCUS 建立並顯示插入號。
WM_SETFONT 設定字型。
WM_SYSCHAR 擷取虛擬金鑰程式代碼。
WM_SYSKEYDOWN 如果索引鍵為 ENTER、TAB、SPACE BAR、DEL、ESC 或 BACKSPACE,則呼叫 DefWindowProc 函式。 如果按鍵是 SHIFT、CTRL 或 ALT,它會檢查組合是否有效,如果有效,則會使用組合來設定熱鍵。 所有其他金鑰都會設定為熱鍵,而不會先檢查其有效性。
WM_SYSKEYUP 擷取虛擬金鑰程式代碼。