WM_KEYDOWN mensagem

Postado na janela com o foco do teclado quando uma tecla não sistema é pressionada. Uma tecla não sistema é uma tecla que é pressionada quando a tecla ALT não é pressionada.

#define WM_KEYDOWN                      0x0100

Parâmetros

wParam

O código de chave virtual da chave não sistema. Confira Códigos de chave virtual.

lParam

A contagem de repetição, o código de verificação, o sinalizador de chave estendida, o código de contexto, o sinalizador de estado-chave anterior e o sinalizador de estado de transição, conforme mostrado a seguir.

Bits Significado
0-15 A contagem de repetição para a mensagem atual. O valor é o número de vezes que o pressionamento de tecla é repetido automaticamente como resultado do usuário que mantém a tecla pressionada. Se o pressionamento de teclas for mantido por tempo suficiente, várias mensagens serão enviadas. No entanto, a contagem de repetição não é cumulativa.
16-23 O código de verificação. O valor depende do OEM.
24 Indica se a tecla é uma tecla estendida, como as teclas ALT e CTRL à direita que aparecem em um teclado avançado de 101 ou 102 teclas. O valor será 1 se for uma tecla estendida; caso contrário, é 0.
25-28 Reservados; não use.
29 O código de contexto. O valor é sempre 0 para uma mensagem WM_KEYDOWN .
30 O estado da chave anterior. O valor será 1 se a chave estiver inativa antes do envio da mensagem ou se for zero se a chave estiver ativada.
31 O estado de transição. O valor é sempre 0 para uma mensagem WM_KEYDOWN .

Para obter mais detalhes, consulte Sinalizadores de mensagem de pressionamento de tecla.

Valor retornado

Um aplicativo deverá retornar zero se processar essa mensagem.

Exemplo

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

Exemplo das Amostras do Windows Classic no GitHub.

Comentários

Se a tecla F10 for pressionada, a função DefWindowProc definirá um sinalizador interno. Quando DefWindowProc recebe a mensagem WM_KEYUP , a função verifica se o sinalizador interno está definido e, nesse caso, envia uma mensagem WM_SYSCOMMAND para a janela de nível superior. O parâmetro WM_SYSCOMMAND da mensagem é definido como SC_KEYMENU.

Devido ao recurso autorepeat, mais de uma mensagem WM_KEYDOWN pode ser postada antes que uma mensagem de WM_KEYUP seja postada. O estado da chave anterior (bit 30) pode ser usado para determinar se a mensagem WM_KEYDOWN indica a primeira transição para baixo ou uma transição repetida para baixo.

Para teclados avançados de 101 e 102 teclas, as teclas estendidas são as teclas ALT e CTRL direitas na seção main do teclado; as teclas INS, DEL, HOME, END, PAGE UP, PAGE DOWN e seta nos clusters à esquerda do teclado numérico; e as teclas DIVIDE (/) e ENTER no teclado numérico. Outros teclados podem dar suporte ao bit de tecla estendida no parâmetro lParam .

Os aplicativos devem passar wParam para TranslateMessage sem alterá-lo.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Windows 2000 Server [somente aplicativos da área de trabalho]
Cabeçalho
Winuser.h (inclua Windows.h)

Confira também