Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Inviato alla finestra con lo stato attivo della tastiera quando un messaggio di WM_KEYDOWN viene convertito dalla funzione TranslateMessage . Il messaggio WM_CHAR contiene il codice carattere del tasto premuto.
#define WM_CHAR 0x0102
Parameters
-
wParam
-
Codice carattere della chiave.
-
lParam
-
Numero di ripetizioni, codice di analisi, flag di chiave estesa, codice di contesto, flag di stato chiave precedente e flag di stato di transizione, come illustrato nella tabella seguente.
Bit Meaning 0-15 Numero di ripetizioni per il messaggio corrente. Il valore è il numero di volte in cui la sequenza di tasti viene eseguita automaticamente in seguito all'utente che tiene premuto il tasto. Se la sequenza di tasti è sufficientemente lunga, vengono inviati più messaggi. Tuttavia, il conteggio delle ripetizioni non è cumulativo. 16-23 Codice di analisi. Il valore dipende dall'OEM. 24 Indica se il tasto è un tasto esteso, ad esempio i tasti ALT e CTRL di destra visualizzati su una tastiera avanzata da 101 o 102 tasti. Il valore è 1 se è una chiave estesa; in caso contrario, è 0. 25-27 Riservato; non usare. 28 Flag della modalità menu. Il valore è 1 se un menu è attivo; in caso contrario, il valore è 0. 29 Codice di contesto. Il valore è 1 se il tasto ALT viene premuto mentre viene premuto il tasto; in caso contrario, il valore è 0. 30 Stato della chiave precedente. Il valore è 1 se la chiave è inattiva prima dell'invio del messaggio oppure è 0 se la chiave è inattiva. 31 Stato di transizione. Il valore è 1 se il tasto viene rilasciato o è 0 se il tasto viene premuto. Per altri dettagli, vedere Flag messaggio di sequenza di tasti.
Valore restituito
Un'applicazione deve restituire zero se elabora questo messaggio.
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;
}
Esempio di esempi classici di Windows in GitHub.
Remarks
Il messaggio WM_CHAR usa unità di codice UTF-16 (Formato trasformazione Unicode a 16 bit) nel relativo wParam se la versione Unicode della funzione RegisterClass è stata usata per registrare la classe window. In caso contrario, il sistema fornisce caratteri nella tabella codici del processo corrente, che può essere impostata su UTF-8 in Windows versione 1903 (aggiornamento di maggio 2019) e versioni successive. Per altre informazioni, vedere Registrazione delle classi di finestre e Uso di tabelle codici UTF-8 nelle app Windows.
A partire da Windows Vista, WM_CHAR messaggio può inviare coppie di surrogati UTF-16 alle finestre Unicode. Utilizzare le macro IS_HIGH_SURROGATE, IS_LOW_SURROGATE e IS_SURROGATE_PAIR per rilevare tali casi, se necessario.
Non esiste necessariamente una corrispondenza uno-a-uno tra i tasti premuti e i messaggi di carattere generati, quindi le informazioni nella parola di ordine elevato del parametro lParam in genere non sono utili per le applicazioni. Le informazioni nella parola ad ordine elevato si applicano solo al messaggio di WM_KEYDOWN più recente che precede la pubblicazione del messaggio WM_CHAR .
Per le tastiere avanzate da 101 e 102 tasti, i tasti estesi sono i tasti ALT destro e i tasti CTRL destro nella sezione principale della tastiera; i tasti INS, DEL, HOME, END, PAGE UP, PAGE DOWN e freccia nei cluster a sinistra del tastierino numerico; e i tasti di divisione (/) e INVIO nel tastierino numerico. Alcune altre tastiere possono supportare il bit del tasto esteso nel parametro lParam .
Il messaggio WM_UNICHAR è uguale a WM_CHAR, ad eccezione del fatto che usa UTF-32. È progettato per inviare o registrare caratteri Unicode alle finestre ANSI e può gestire caratteri supplementari Unicode.
Requisiti
| Requirement | Valore |
|---|---|
| Client minimo supportato |
Windows 2000 Professional [solo app desktop] |
| Server minimo supportato |
Windows 2000 Server [solo app desktop] |
| Intestazione |
|