Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Publikováno do okna s fokusem klávesnice, když WM_KEYDOWN zprávu přeloží funkce TranslateMessage . Zpráva WM_CHAR obsahuje kód znaku stisknuté klávesy.
#define WM_CHAR 0x0102
Parameters
-
wParam
-
Kód znaku klíče.
-
lParam
-
Počet opakování, prohledání kódu, příznak rozšířeného klíče, kontextový kód, příznak předchozího stavu klíče a příznak stavu přechodu, jak je znázorněno v následující tabulce.
Bity Význam 0-15 Počet opakování pro aktuální zprávu. Hodnota je počet automatického stisknutí kláves v důsledku toho, že uživatel drží stisknutou klávesu. Pokud je stisknutí klávesy dostatečně dlouhé, odešle se více zpráv. Počet opakování však není kumulativní. 16-23 Kód kontroly. Hodnota závisí na OEM. 24 Určuje, jestli je klávesou rozšířená klávesa, například klávesy ALT a CTRL vpravo, které se zobrazují na rozšířené klávesnici s 101 klávesami nebo 102 klávesami. Hodnota je 1, pokud se jedná o rozšířený klíč; jinak je to 0. 25-27 Vyhrazena; nepoužívejte. 28 Příznak režimu nabídky. Hodnota je 1, pokud je nabídka aktivní; jinak je hodnota 0. 29 Kontextový kód. Hodnota je 1, pokud je klávesa ALT při stisknutí klávesy stisknuta dolů; jinak je hodnota 0. 30 Předchozí stav klíče. Hodnota je 1, pokud je klíč před odesláním zprávy dolů, nebo je 0, pokud je klíč nahoru. 31 Stav přechodu. Hodnota je 1, pokud je klávesa uvolněna, nebo je 0, pokud je stisknuta klávesa. Další podrobnosti najdete v tématu Příznaky zprávy stisknutí kláves.
Návratová hodnota
Pokud aplikace zpracuje tuto zprávu, měla by vrátit nulu.
Příklad
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říklad z klasických ukázek Windows na GitHubu.
Poznámky
Zpráva WM_CHAR používá kódové jednotky UTF-16 (16bitového formátu transformace Unicode) ve svém wParam , pokud byla použita verze Unicode funkce RegisterClass k registraci třídy okna. V opačném případě systém poskytuje znaky na aktuální znakové stránce procesu, které lze nastavit na UTF-8 v Windows verze 1903 (aktualizace z května 2019) a novější. Další informace najdete v tématu Registrace tříd oken a použití znakových stránek UTF-8 v aplikacích Windows.
Počínaje Windows Vista může zpráva WM_CHAR odesílat náhradní dvojice UTF-16 do oken Unicode. K detekci takových případů použijte makra IS_HIGH_SURROGATE, IS_LOW_SURROGATE a IS_SURROGATE_PAIR .
Mezi vygenerovanými klávesami a zprávami znaků není nutně 1:1, takže informace ve slově s vysokým pořadím parametru lParam obecně nejsou pro aplikace užitečné. Informace ve slově s vysokým pořadím platí pouze pro poslední WM_KEYDOWN zprávu, která předchází publikování zprávy WM_CHAR .
U vylepšených 101- a 102 klávesových zkratek jsou rozšířené klávesy vpravo ALT a pravé klávesy CTRL v hlavní části klávesnice; INS, DEL, HOME, END, PAGE UP, PAGE DOWN a šipkové klávesy v clusterech vlevo od číselné klávesnice; a klávesy divide (/) a ENTER na numerické klávesnici. Některé další klávesnice můžou podporovat bit rozšířené klávesy v parametru lParam .
Zpráva WM_UNICHAR je stejná jako WM_CHAR, s výjimkou použití UTF-32. Je navržený tak, aby odesílal nebo posílal znaky Unicode do oken ANSI a mohl zpracovávat znaky doplňkové roviny Unicode.
Requirements
| Requirement | Value |
|---|---|
| Minimální podporovaný klient |
Windows 2000 Professional [pouze desktopové aplikace] |
| Minimální podporovaný server |
Windows 2000 Server [pouze desktopové aplikace] |
| Záhlaví |
|
Viz také
- TranslateMessage
- WM_KEYDOWN
- WM_UNICHAR
- Klávesnicový vstup
- o zadávání pomocí klávesnice