Mensaje _ DE WM KEYDOWN

Se publica en la ventana con el foco del teclado cuando se presiona una tecla no del sistema. Una clave no del sistema es una tecla que se presiona cuando no se presiona la tecla ALT.

#define WM_KEYDOWN                      0x0100

Parámetros

wParam

Código de clave virtual de la clave no del sistema. Consulte Códigos de clave virtual.

lParam

Recuento de repeticiones, código de examen, marca de clave extendida, código de contexto, marca de estado de clave anterior y marca de estado de transición, como se muestra a continuación.

Bits Significado
0-15 Recuento de repeticiones para el mensaje actual. El valor es el número de veces que se autorpeda la pulsación de tecla como resultado de que el usuario mantiene presionada la tecla. Si la pulsación de tecla se mantiene lo suficientemente larga, se envían varios mensajes. Sin embargo, el recuento de repeticiones no es acumulativo.
16-23 Código de examen. El valor depende del OEM.
24 Indica si la tecla es una tecla extendida, como las teclas ALT y CTRL de la derecha que aparecen en un teclado mejorado de 101 o 102 teclas. El valor es 1 si es una clave extendida; de lo contrario, es 0.
25-28 Reservado; no se usan.
29 Código de contexto. El valor siempre es 0 para un mensaje _ WM KEYDOWN.
30 Estado de la clave anterior. El valor es 1 si la clave está fuera de servicio antes de enviar el mensaje, o es cero si la clave está arriba.
31 Estado de transición. El valor siempre es 0 para un mensaje _ WM KEYDOWN.

Para obtener más información, vea Marcas de mensajes de pulsación de teclas.

Valor devuelto

Una aplicación debe devolver cero si procesa este mensaje.

Ejemplo

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

Ejemplo de Windows ejemplos clásicos en GitHub.

Observaciones

Si se presiona la tecla F10, la función DefWindowProc establece una marca interna. Cuando DefWindowProc recibe el mensaje WM _ KEYUP, la función comprueba si la marca interna está establecida y, si es así, envía un mensaje _ SYSCOMMAND de WM a la ventana de nivel superior. El parámetro _ WM SYSCOMMAND del mensaje se establece en SC _ KEYMENU.

Debido a la característica de autorepeat, se puede publicar más de un mensaje WM _ KEYDOWN antes de que se publique un mensaje DE WM _ KEYUP. El estado de clave anterior (bit 30) se puede usar para determinar si el mensaje WM _ KEYDOWN indica la primera transición hacia abajo o una transición hacia abajo repetida.

Para los teclados mejorados de 101 y 102 teclas, las teclas extendidas son las teclas ALT y CTRL derechas en la sección principal del teclado. las teclas de dirección INS, DEL, HOME, END, PAGE UP, PAGE DOWN y en los clústeres situados a la izquierda del teclado numérico. y las claves divide (/) y ENTRAR en el teclado numérico. Otros teclados pueden admitir el bit de tecla extendida en el parámetro lParam.

Las aplicaciones deben pasar wParam a TranslateMessage sin modificarlo en absoluto.

Requisitos

Requisito Value
Cliente mínimo compatible
[Solo aplicaciones de escritorio] de Windows 2000 Professional
Servidor mínimo compatible
[Solo aplicaciones de escritorio] de Windows 2000 Server
Encabezado
Winuser.h (incluir Windows.h)

Consulte también

Referencia

DefWindowProc

TranslateMessage

WM _ CHAR

WM _ KEYUP

WM _ SYSCOMMAND

Conceptual

Entrada de teclado