Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 |
|