WM_CHAR Nachricht

Wird in das Fenster mit dem Tastaturfokus gesendet, wenn eine WM_KEYDOWN Nachricht von der TranslateMessage-Funktion übersetzt wird. Die WM_CHAR Nachricht enthält den Zeichencode der taste, die gedrückt wurde.

#define WM_CHAR                         0x0102

Parameter

wParam

Der Zeichencode des Schlüssels.

lParam

Die Wiederholungsanzahl, der Scancode, das Flag mit erweiterter Taste, der Kontextcode, das vorherige Schlüsselstatusflagge und das Übergangszustandsflag, wie in der folgenden Tabelle dargestellt.

Bits Bedeutung
0-15 Die Wiederholungsanzahl für die aktuelle Nachricht. Der Wert ist die Häufigkeit, wie die Tasteneingabe automatisch ausgeführt wird, weil der Benutzer den Schlüssel gedrückt hält. Wenn die Tastatureingabe lange 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 rechte ALT- und STRG-TASTE, die auf einer erweiterten 101- oder 102-Tasten-Tastatur 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 1, wenn die ALT-Taste gedrückt gehalten wird, während die Taste gedrückt wird. andernfalls ist der Wert 0.
30 Der vorherige Schlüsselzustand. Der Wert ist 1, wenn der Schlüssel ausfällt, bevor die Nachricht gesendet wird, oder 0, wenn der Schlüssel aktiviert ist.
31 Der Übergangszustand. Der Wert ist 1, wenn die Taste freigegeben wird, oder 0, wenn die Taste gedrückt wird.

Weitere Informationen finden Sie unter Flags für Tastenanschläge.

Rückgabewert

Eine Anwendung sollte null zurückgeben, wenn sie diese Nachricht verarbeitet.

Beispiel

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
   
    // ...

    case WM_CHAR:
        OnKeyPress(wParam);
        break;

    default:
        return DefWindowProc(hwnd, message, wParam, lParam);
    }
    return 0;
}

Beispiel aus Klassische Windows-Beispiele auf GitHub.

Bemerkungen

Die WM_CHAR-Nachricht verwendet UTF-16 -Codeeinheiten (16-Bit Unicode Transformation Format) in ihrem wParam , wenn die Unicode-Version der RegisterClass-Funktion zum Registrieren der Fensterklasse verwendet wurde. Andernfalls stellt das System Zeichen in der aktuellen Prozesscodepage bereit, die in Windows Version 1903 (Mai 2019 Update) und höher auf UTF-8 festgelegt werden kann. Weitere Informationen finden Sie unter Registrieren von Fensterklassen und Verwenden von UTF-8-Codepages in Windows-Apps.

Ab Windows Vista kann WM_CHAR Nachricht UTF-16-Ersatzpaare an Unicode-Fenster senden. Verwenden Sie die Makros IS_HIGH_SURROGATE, IS_LOW_SURROGATE und IS_SURROGATE_PAIR , um solche Fälle bei Bedarf zu erkennen.

Es gibt nicht notwendigerweise eine 1:1-Korrespondenz zwischen gedrückten Tasten und generierten Zeichennachrichten, und daher sind die Informationen im hochgeordneten Wort des lParam-Parameters im Allgemeinen nicht nützlich für Anwendungen. Die Informationen im Hochgeordneten Wort gelten nur für die neueste WM_KEYDOWN Nachricht, die der Veröffentlichung der WM_CHAR Nachricht vorangeht.

Bei erweiterten Tastaturen mit 101 und 102 Tasten sind erweiterte Tasten die rechte ALT-Taste und die rechten 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 numerischen Tastatur; und die Trenntasten (/) und DIE EINGABETASTE in der numerischen Tastatur. Einige andere Tastaturen unterstützen möglicherweise das Bit mit erweiterter Taste im lParam-Parameter .

Die WM_UNICHAR Nachricht ist identisch mit WM_CHAR, mit ausnahme von UTF-32. Es ist für das Senden oder Posten von Unicode-Zeichen an ANSI-Fenstern konzipiert und kann Unicode-Zusatzebenenzeichen verarbeiten.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Windows 2000 Server [nur Desktop-Apps]
Header
Winuser.h (einschließlich Windows.h)

Siehe auch