Erstellen eines Hot Key-Steuerelements
In diesem Thema wird veranschaulicht, wie Sie ein Hot-Key-Steuerelement erstellen. Sie erstellen ein Hot-Key-Steuerelement, indem Sie die CreateWindowEx-Funktion verwenden und die _ HOTKEY CLASS-Fensterklasse angeben.
Wichtige Informationen
Technologien
Voraussetzungen
- C/C++
- Windows Benutzeroberfläche-Programmierung
Anweisungen
Stellen Sie vor dem Erstellen des Hot-Key-Steuerelements sicher, dass die DLL der allgemeinen Steuerelemente geladen ist.
Im folgenden C++-Codebeispiel ruft die anwendungsdefinierte Funktion die InitCommonControlsEx-Funktion auf, um die allgemeine Steuerelement-DLL zu laden. Anschließend ruft sie die CreateWindowEx-Funktion auf und gibt die HOTKEY _ CLASS-Fensterklasse an, um ein Hot-Key-Steuerelement zu erstellen. Er verwendet die HKM _ SETRULES- und HKM _ SETHOTKEY-Meldungen, um das Steuerelement zu initialisieren, und gibt ein Handle an das Steuerelement zurück.
Mit diesem Hot Key-Steuerelement kann der Benutzer weder einen hot-Schlüssel auswählen, bei dem es sich um einen einzelnen unveränderten Schlüssel handelt, noch erlaubt es dem Benutzer, nur UMSCHALTTASTE und einen Schlüssel auszuwählen. Diese Regeln verhindern effektiv, dass der Benutzer einen Hot-Key auswählt, der beim Eingeben von Text versehentlich eingegeben wird.
// Creates a hot key control and sets rules and default settings for it.
//
// Returns the handle of the hot key control.
//
// Parameter
// hwndDlg - Handle of the parent window (dialog box).
//
// Global variable
// g_hinst - Handle of the application instance.
extern HINSTANCE g_hinst;
HWND WINAPI InitializeHotkey(HWND hwndDlg)
{
HWND hwndHot = NULL;
// Ensure that the common control DLL is loaded.
INITCOMMONCONTROLSEX icex; //declare an INITCOMMONCONTROLSEX Structure
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_HOTKEY_CLASS; //set dwICC member to ICC_HOTKEY_CLASS
// this loads the Hot Key control class.
InitCommonControlsEx(&icex);
hwndHot = CreateWindowEx(0, // no extended styles
HOTKEY_CLASS, // class name
TEXT(""), // no title (caption)
WS_CHILD | WS_VISIBLE, // style
15, 10, // position
200, 20, // size
hwndDlg, // parent window
NULL, // uses class menu
g_hinst, // instance
NULL); // no WM_CREATE parameter
SetFocus(hwndHot);
// Set rules for invalid key combinations. If the user does not supply a
// modifier key, use ALT as a modifier. If the user supplies SHIFT as a
// modifier key, use SHIFT + ALT instead.
SendMessage(hwndHot,
HKM_SETRULES,
(WPARAM) HKCOMB_NONE | HKCOMB_S, // invalid key combinations
MAKELPARAM(HOTKEYF_ALT, 0)); // add ALT to invalid entries
// Set CTRL + ALT + A as the default hot key for this window.
// 0x41 is the virtual key code for 'A'.
SendMessage(hwndHot,
HKM_SETHOTKEY,
MAKEWORD(0x41, HOTKEYF_CONTROL | HOTKEYF_ALT),
0);
return hwndHot;
}