WM_CHAR üzenet

A TranslateMessage függvény WM_KEYDOWN üzenet lefordításakor a billentyűzetfókuszt tartalmazó ablakba kerül. A WM_CHAR üzenet a lenyomott kulcs karakterkódját tartalmazza.

#define WM_CHAR                         0x0102

Parameters

wParam

A kulcs karakterkódja.

lParam

Az ismétlések száma, a beolvasási kód, a kiterjesztett kulcs jelölője, a környezeti kód, az előző kulcsállapot-jelző és az áttűnési állapot jelzője az alábbi táblázatban látható módon.

Bitek Meaning
0-15 Az aktuális üzenet ismétlési száma. Az érték az a szám, ahányszor a billentyűleütés automatikusan be van adva, mert a felhasználó lenyomja a kulcsot. Ha a billentyűleütés elég hosszú ideig van tárolva, a rendszer több üzenetet küld. Az ismétlések száma azonban nem kumulatív.
16-23 A vizsgálati kód. Az érték az OEM-től függ.
24 Azt jelzi, hogy a kulcs kiterjesztett kulcs-e, például a jobb oldali ALT és CTRL billentyűk, amelyek egy továbbfejlesztett 101 vagy 102 billentyűs billentyűzeten jelennek meg. Az érték 1, ha kiterjesztett kulcs; ellenkező esetben 0.
25-27 Fenntartott; ne használja.
28 A menümód jelzője. Az érték 1, ha egy menü aktív; ellenkező esetben az érték 0.
29 A környezeti kód. Az érték 1, ha az ALT billentyűt lenyomva tartja a billentyű lenyomása közben; ellenkező esetben az érték 0.
30 Az előző kulcsállapot. Az érték 1, ha a kulcs le van állítva az üzenet elküldése előtt, vagy 0, ha a kulcs fel van állítva.
31 Az áttűnés állapota. Az érték 1, ha a kulcs ki van adva, vagy 0, ha a kulcs le van nyomva.

További információ: Billentyűleütési üzenetjelölők.

Visszaadott érték

Az alkalmazásnak nullát kell visszaadnia, ha feldolgozza ezt az üzenetet.

Example

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;
}

Példa a GitHubon Klasszikus Windows-minták.

Remarks

A WM_CHAR üzenet UTF-16 (16 bites Unicode átalakítási formátum) kódegységeket használ a wParam fájlban, ha a RegisterClass függvény Unicode-verzióját használták az ablakosztály regisztrálásához. Ellenkező esetben a rendszer az aktuális folyamatkódlapon tartalmaz karaktereket, amelyek az 1903-as (2019. májusi frissítés) és újabb verziókban Windows UTF-8 értékre állíthatók be. További információ: Ablakosztályok regisztrálása és UTF-8 kódlapok használata Windows alkalmazásokban.

A Windows Vista kezdve WM_CHAR üzenet képes UTF-16 helyettesítő párokat küldeni Unicode-ablakokba. Szükség esetén a IS_HIGH_SURROGATE, IS_LOW_SURROGATE és IS_SURROGATE_PAIR makrókkal észlelhet ilyen eseteket.

A lenyomott billentyűk és a létrehozott karakterüzenetek nem feltétlenül egy-az-egyhez típusú levelezést tartalmaznak, ezért az lParam paraméter magasrendű szava általában nem hasznos az alkalmazások számára. A magasrendű szó információi csak a WM_CHAR üzenet közzétételét megelőző legutóbbi WM_KEYDOWN üzenetre vonatkoznak .

Továbbfejlesztett 101 és 102 billentyűs billentyűzetek esetén a bővített billentyűk a billentyűzet fő szakaszában a jobb ALT és a jobb CTRL billentyűk; az INS, DEL, HOME, END, PAGE UP, PAGE DOWN és arrow keys in the clusters to the left of the numeric keypad; és az osztás (/) és az ENTER billentyűk a numerikus billentyűzeten. Egyes más billentyűzetek támogathatják a kiterjesztett kulcsú bitet az lParam paraméterben.

A WM_UNICHAR üzenet ugyanaz, mint WM_CHAR, kivéve, ha UTF-32-t használ. Unicode-karakterek ANSI-ablakokba való küldésére vagy közzétételére szolgál, és képes unicode kiegészítő síkkarakterek kezelésére.

Requirements

Requirement Value
Minimálisan támogatott ügyfél
Windows 2000 Professional [csak asztali alkalmazások]
Minimálisan támogatott kiszolgáló
Windows 2000 Server [csak asztali alkalmazások]
Fejléc
Winuser.h (Windows.h)

Lásd még