winuser.h

Mensaje WM_KEYDOWN

Definición

WM_KEYDOWN
nVirtKey = (int) wParam;    // código de tecla virtual
lKeyData = lParam;          // dato de tecla

El mensaje WM_KEYDOWN es enviado a la ventana que tiene el foco del teclado cuando se pulsa una tecla que no es de sistema. Una tecla no es de sistema cuando la tecla ALT no está presionada.

Descripción

nVirtKey: valor del parámetro wParam. Indica el código de la tecla virtual que no sea de sistema.

lKeyData: valor del parámetro lParam. Especifica el contador de repetición, código de escaneo, la bandera de teclado extendido, código de entorno, bandera de estado previo de la tecla y bandera de estado de transición, se trata de un campo de bits como se muestra en la siguiente tabla:

Valor Descripción
0~15 Indica el contador de repetición. El valor es el número de veces que se repite una tecla como resultado de haber dejado pulsada una tecla.
16~23 Indica el código de escaneo. Depende del fabricante y modelo del equipo.
24 Indica si la tecla es una tecla extendida, como la tecla derecha de ALT y CTRL que aparece en el teclado mejorado de 101 o 102 teclas. El valor es uno si es una tecla extendida y cero si no lo es.
25~28 Reservado, no usar.
29 Indica el código de contexto. El valor es 1 si la tecla ALT estaba pulsada mientras la tecla fue pulsada; en caso contrario es 0.
30 Indica el estado previo de la tecla. El valor es 1 si la tecla estaba pulsada antes de que fuera enviado el mensaje y 0 si no lo estaba.
31 Indica el estado de transición. El valor es 1 si la tecla fue liberada o 0 si permanece pulsada.

Valor de retorno

La aplicación debe retornar cero si procesó este mensaje.

Acción por defecto

Si se pulsó la tecla F10, la función DefWindowProc activa una bandera interna. Cuando DefWindowProc recibe el mensaje WM_KEYUP, la función comprueba si esa bandera interna esta activa y, si lo está, envía un mensaje WM_SYSCOMMAND a la ventana de mayor nivel. Como parámetro wParam del mensaje se usa el valor SC_KEYMENU.

Observaciones

Puesto que no es necesario que exista una correspondencia uno a uno entre las teclas pulsadas y los mensaje de carácter generados, la información en la palabra alta del parámetro lKeyData normalmente no es útil para las aplicaciones. Esta información se aplica sólo al mensaje WM_KEYDOWN que precede al mensaje WM_CHAR más recientemente enviado.

Para teclados mejorados de 101 y 102 teclas, las teclas extendidas son el ALT y el CTRL derechos en la sección principal del teclado y las teclas INS, DEL, HOME, END, PAGE UP, PAGE DOWN y las teclas de flechas en el grupo de teclas a la izquierda del teclado numérico; también la tecla de dividir (/) y ENTER del teclado numérico. Algunos otros teclados pueden soportar el bit de tecla extendida en el parámetro lKeyData.