Compartir a través de


mensaje de WM_KEYDOWN

Se publica en la ventana con el foco del teclado cuando se presiona una tecla no del sistema. Una tecla 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

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

Bits Significado
0-15 Número de repeticiones para el mensaje actual. El valor es el número de veces que se repite la pulsación de tecla como resultado de que el usuario mantenga presionada la tecla. Si la tecla se mantiene presionada durante un tiempo suficiente, 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 tecla extendida; de lo contrario, es 0.
25-28 Reservados; no use.
29 Código de contexto. El valor siempre es 0 para un mensaje de WM_KEYDOWN .
30 Estado de clave anterior. El valor es 1 si la clave está inactiva 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 de WM_KEYDOWN .

Para obtener más información, consulte Marcas de mensaje 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 tomado del directorio Windows Classic Samples de GitHub.

Comentarios

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 se establece la marca interna y, si es así, envía un mensaje WM_SYSCOMMAND a la ventana de nivel superior. El parámetro WM_SYSCOMMAND del mensaje se establece en SC_KEYMENU.

Debido a la característica autorepeat, se puede publicar más de un mensaje de 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 de WM_KEYDOWN indica la primera transición hacia abajo o una transición descendente repetida.

Para teclados mejorados de 101 y 102 teclas, las teclas extendidas son las teclas ALT y CTRL correctas en la sección principal del teclado; las teclas INS, DEL, HOME, END, PAGE UP, PAGE DOWN y arrow de los clústeres a la izquierda del teclado numérico; y las teclas dividir (/) 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
Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible
Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado
Winuser.h (incluye Windows.h)

Consulte también