messaggio WM_KEYDOWN

Inviato alla finestra con lo stato attivo della tastiera quando viene premuto un tasto non di sistema. Un tasto non di sistema è un tasto premuto quando il tasto ALT non viene premuto.

#define WM_KEYDOWN                      0x0100

Parametri

wParam

Codice della chiave virtuale della chiave non di sistema. Vedere Codici di chiave virtuale.

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 di seguito.

BITS Significato
0-15 Numero di ripetizioni per il messaggio corrente. Il valore è il numero di volte in cui la sequenza di tasti viene creata automaticamente in seguito all'utente che tiene premuto il tasto. Se la sequenza di tasti viene mantenuta abbastanza 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 si tratta di una chiave estesa; in caso contrario, è 0.
25-28 Riservati; non usare.
29 Codice di contesto. Il valore è sempre 0 per un messaggio di WM_KEYDOWN .
30 Stato della chiave precedente. Il valore è 1 se la chiave è inattiva prima dell'invio del messaggio oppure è zero se la chiave è in alto.
31 Stato di transizione. Il valore è sempre 0 per un messaggio di WM_KEYDOWN .

Per altri dettagli, vedere Flag di messaggio di sequenza di tasti.

Valore restituito

Un'applicazione deve restituire zero se elabora questo messaggio.

Esempio

LRESULT CALLBACK HostWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message) 
    {
    case WM_KEYDOWN:
        if (wParam == VK_ESCAPE)
        {
            if (isFullScreen) 
            {
                GoPartialScreen();
            }
        }
        break;

    // ...
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;  
}

Esempio di esempi classici di Windows in GitHub.

Commenti

Se viene premuto il tasto F10, la funzione DefWindowProc imposta un flag interno. Quando DefWindowProc riceve il messaggio di WM_KEYUP , la funzione controlla se il flag interno è impostato e, in tal caso, invia un messaggio di WM_SYSCOMMAND alla finestra di primo livello. Il parametro WM_SYSCOMMAND del messaggio è impostato su SC_KEYMENU.

A causa della funzionalità autorepeat, è possibile pubblicare più di un messaggio di WM_KEYDOWN prima della pubblicazione di un messaggio di WM_KEYUP . Lo stato della chiave precedente (bit 30) può essere usato per determinare se il messaggio WM_KEYDOWN indica la prima transizione inattiva o una transizione inattiva ripetuta.

Per le tastiere avanzate da 101 e 102 tasti, i tasti estesi sono i tasti ALT e CTRL destro nella sezione principale della tastiera; i tasti INS, DEL, HOME, END, PAGE UP, PAGE DOWN e arrow nei cluster a sinistra del tastierino numerico; e i tasti di divisione (/) e INVIO nel tastierino numerico. Altre tastiere possono supportare il bit del tasto esteso nel parametro lParam .

Le applicazioni devono passare wParam a TranslateMessage senza modificarle affatto.

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Winuser.h (include Windows.h)

Vedi anche