Informacje o kontrolkach klucza gorącego
Kontrola klawiszy skrótu to okno, które umożliwia użytkownikowi wprowadzanie kombinacji naciśnięć klawiszy do użycia jako klawisz skrótu. Kombinacja klawiszy, zwana klawiszem skrótu, to kombinacja, którą użytkownik może nacisnąć, aby szybko wykonać akcję. Na przykład użytkownik może utworzyć klucz gorący, który aktywuje dane okno i przenosi go do góry kolejności z. Kontrolka klucza gorącego wyświetla opcje użytkownika i zapewnia, że użytkownik wybierze prawidłową kombinację. Na poniższym zrzucie ekranu pokazano, jak kontrolka skrótu klawiaturowego jest wyświetlana w oknie dialogowym po tym, jak użytkownik naciśnie klawisz Alt.
Korzystanie ze skrótów klawiaturowych
Gdy użytkownik wprowadzi kombinację klawiszy, która ma być używana jako skrót klawiaturowy, nazwy klawiszy są wyświetlane w kontrolce skrótu klawiaturowego. Kombinacja klawiszy może składać się z klawisza modyfikującego (np. CTRL, ALT lub SHIFT) i towarzyszącego klawisza (takiego jak klawisz znaku, klawisz strzałki, klawisz funkcyjny itd.).
Po wybraniu przez użytkownika kombinacji aplikacja pobiera kombinację z kontrolki klucza gorącego i używa go do skonfigurowania klucza gorącego w systemie. Informacje pobrane z kontrolki skrótu klawiaturowego zawierają flagę wskazującą klawisz modyfikatora oraz kod klawisza wirtualnego.
Aplikacja może używać informacji dostarczonych przez kontrolkę klucza gorącego w celu skonfigurowania globalnego klucza gorącego lub klucza gorącego specyficznego dla wątku. Globalny klucz dostępu jest skojarzony z określonym oknem; umożliwia użytkownikowi aktywowanie okna z dowolnej części systemu. Aplikacja ustawia globalny skrót klawiszowy przy użyciu komunikatu WM_SETHOTKEY. Za każdym razem, gdy użytkownik naciska globalny skrót klawiszowy, okno określone w WM_SETHOTKEY otrzymuje komunikat WM_SYSCOMMAND określający wartość SC_HOTKEY. Ten komunikat aktywuje okno, które go odbiera. Klucz gorący pozostaje prawidłowy do momentu zakończenia działania aplikacji o nazwie WM_SETHOTKEY.
Klawisz skrótu specyficzny dla wątku generuje komunikat WM_HOTKEY, który jest wysyłany na początek określonego wątku, tak aby został usunięty w trakcie następnej iteracji pętli komunikatów. Aplikacja ustawia skrót klawiszowy specyficzny dla wątku przy użyciu funkcji RegisterHotKey.
Komunikaty sterowania kluczem gorącym
Po utworzeniu kontrolki skrótu klawiaturowego aplikacja współdziała z nią przy użyciu trzech komunikatów: HKM_SETRULES, HKM_SETHOTKEYi HKM_GETHOTKEY.
Aplikacja może wysłać komunikat HKM_SETRULES, aby określić zestaw kombinacji klawiszy CTRL, ALT i SHIFT, które są uznawane za nieprawidłowe skróty klawiszowe. Jeśli aplikacja określa nieprawidłową kombinację, powinna również określić domyślną kombinację modyfikatora do użycia, gdy użytkownik wybierze nieprawidłową kombinację. Gdy użytkownik wprowadzi nieprawidłową kombinację, system wykonuje operację logiczną OR na nieprawidłowej kombinacji i kombinacji domyślnej. Wynik jest uznawany za prawidłową kombinację; jest on konwertowany na ciąg i wyświetlany w kontrolce.
Komunikat HKM_SETHOTKEY umożliwia aplikacji ustawienie kombinacji klawiszy skrótu w kontrolce klawiszy skrótu. Ten komunikat jest również zwykle używany podczas tworzenia kontrolki klucza gorącego.
Aplikacje używają komunikatu HKM_GETHOTKEY w celu pobrania kodu klucza wirtualnego i flag modyfikatora klucza gorącego wybranego przez użytkownika.
Powiadomienia dotyczące kontroli klucza gorącego
Kontrolka klucza gorącego nie wysyła żadnych kodów powiadomień za pośrednictwem komunikatu WM_NOTIFY. Spowoduje to jednak wysłanie powiadomienia EN_CHANGE za pośrednictwem komunikatu WM_COMMAND, gdy użytkownik zmieni zawartość kontrolki.
Domyślne przetwarzanie komunikatów skrótów klawiaturowych
W tej sekcji opisano komunikaty okien obsługiwane przez procedurę okna dla wstępnie zdefiniowanej klasy okna HOTKEY_CLASS używanej z kontrolkami dostępu.
Komunikat | Przetwarzanie wykonane |
---|---|
WM_CHAR | Pobiera kod klucza wirtualnego. |
WM_CREATE | Inicjuje kontrolę klawiszy skrótu, czyści wszelkie reguły klawiszy skrótu i używa czcionki systemowej. |
WM_ERASEBKGND | Ukrywa kursor, wywołuje funkcję DefWindowProc i ponownie wyświetla kursor. |
WM_GETDLGCODE | Zwraca kombinację wartości DLGC_WANTCHARS i DLGC_WANTARROWS. |
WM_GETFONT | Pobiera czcionkę. |
WM_KEYDOWN | Wywołuje funkcję DefWindowProc, jeśli kluczem jest ENTER, TAB, SPACJA, DEL, ESC lub BACKSPACE. Jeśli przyciskiem jest SHIFT, CTRL lub ALT, program sprawdza, czy kombinacja jest prawidłowa, a jeśli tak, ustawia skrót klawiszowy przy użyciu tej kombinacji. Wszystkie inne klucze są ustawiane jako klucze dostępu bez uprzedniego sprawdzenia ich ważności. |
WM_KEYUP | Pobiera kod klucza wirtualnego. |
WM_KILLFOCUS | Niszczy karetki. |
WM_LBUTTONDOWN | Ustawia fokus na okno. |
WM_NCCREATE | Ustawia styl okna WS_EX_CLIENTEDGE. |
WM_PAINT | Maluje kontrolkę skrótu klawiszowego. |
WM_SETFOCUS | Tworzy i wyświetla kursor. |
WM_SETFONT | Ustawia czcionkę. |
WM_SYSCHAR | Pobiera kod klucza wirtualnego. |
WM_SYSKEYDOWN | Wywołuje funkcję DefWindowProc, jeśli kluczem jest ENTER, TAB, SPACJA, DEL, ESC lub BACKSPACE. Jeśli klawisz to SHIFT, CTRL lub ALT, sprawdza, czy kombinacja jest prawidłowa, a jeśli tak, ustawia klawisz skrótu przy użyciu kombinacji. Wszystkie inne klawisze są ustawiane jako klawisze skrótu bez uprzedniego sprawdzenia ich ważności. |
WM_SYSKEYUP | Pobiera kod klucza wirtualnego. |