WM_KEYDOWN Nachricht
Wird im Fenster mit dem Tastaturfokus angezeigt, wenn eine Nichtsystemtaste gedrückt wird. Eine Nichtsystemtaste ist eine Taste, die gedrückt wird, wenn die ALT-TASTE nicht gedrückt wird.
#define WM_KEYDOWN 0x0100
-
wParam
-
Der Virtuelle Schlüsselcode des Nichtsystemschlüssels. Weitere Informationen finden Sie unter Virtual Key Codes.
-
lParam
-
Die Wiederholungsanzahl, der Scancode, das Flag für erweiterte Schlüssel, der Kontextcode, das vorherige Schlüsselzustandsflag und das Übergangszustandsflag, wie im Folgenden gezeigt.
Bits Bedeutung 0-15 Die Wiederholungsanzahl für die aktuelle Nachricht. Der Wert gibt an, wie oft die Tastatureingabe automatisch ausgeführt wird, wenn der Benutzer die Taste gedrückt hält. Wenn die Tastatureingabe lang genug gehalten wird, werden mehrere Nachrichten gesendet. Die Wiederholungsanzahl ist jedoch nicht kumulativ. 16-23 Der Scancode. Der Wert hängt vom OEM ab. 24 Gibt an, ob es sich bei der Taste um eine erweiterte Taste handelt, z. B. die rechten ALT- und STRG-Tasten, die auf einer erweiterten Tastatur mit 101 oder 102 Tasten angezeigt werden. Der Wert ist 1, wenn es sich um einen erweiterten Schlüssel handelt. Andernfalls ist es 0. 25-28 Reserviert; nicht verwenden. 29 Der Kontextcode. Der Wert ist für eine WM_KEYDOWN Nachricht immer 0. 30 Der vorherige Schlüsselzustand. Der Wert ist 1, wenn der Schlüssel vor dem Senden der Nachricht ausgefallen ist, oder null, wenn der Schlüssel aktiviert ist. 31 Der Übergangszustand. Der Wert ist für eine WM_KEYDOWN Nachricht immer 0. Weitere Informationen finden Sie unter Tastatureingabe-Meldungsflags.
Eine Anwendung sollte null zurückgeben, wenn sie diese Nachricht verarbeitet.
LRESULT CALLBACK HostWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_KEYDOWN:
if (wParam == VK_ESCAPE)
{
if (isFullScreen)
{
GoPartialScreen();
}
}
break;
// ...
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
Beispiel aus Klassische Windows-Beispiele auf GitHub.
Wenn die Taste F10 gedrückt wird, legt die DefWindowProc-Funktion ein internes Flag fest. Wenn DefWindowProc die WM_KEYUP Nachricht empfängt, überprüft die Funktion, ob das interne Flag festgelegt ist, und sendet eine WM_SYSCOMMAND Nachricht an das Fenster der obersten Ebene. Der parameter WM_SYSCOMMAND der Nachricht ist auf SC_KEYMENU festgelegt.
Aufgrund des Autorepeat-Features können mehrere WM_KEYDOWN Nachricht gepostet werden, bevor eine WM_KEYUP Nachricht gepostet wird. Der vorherige Schlüsselzustand (Bit 30) kann verwendet werden, um zu bestimmen, ob die WM_KEYDOWN Meldung den ersten Abwärtsübergang oder einen wiederholten Abwärtsübergang angibt.
Bei erweiterten Tastaturen mit 101 und 102 Tasten sind die erweiterten Tasten die rechten ALT- und STRG-Tasten auf dem Standard Abschnitt der Tastatur, die TASTEN INS, ENTF, HOME, END, PAGE UP, PAGE DOWN und PFEIL in den Clustern links neben der Zehnertastatur sowie die Trenntasten (/) und DIE EINGABETASTE in der Zehnertastatur. Andere Tastaturen unterstützen möglicherweise das Bit mit erweiterter Taste im Parameter lParam .
Anwendungen müssen wParam an TranslateMessage übergeben, ohne es überhaupt zu ändern.
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) |
Windows 2000 Server [nur Desktop-Apps] |
Header |
|