Mensaje WM_SYSKEYDOWN
Definición
WM_SYSKEYDOWN nVirtKey = (int) wParam; // código de tecla virtual lKeyData = lParam; // dato de tecla
El mensaje WM_SYSKEYDOWN es enviado a la ventana que tiene el foco del teclado cuando es usuario mantiene pulsada la tecla ALT y después pulsa otra tecla. También ocurre cuando ninguna ventana tiene el foco del teclado; en ese caso se envía el mensaje WM_SYSKEYDOWN a la ventana activa. La ventana que recibe el mensaje puede distinguir entre estas dos situaciones comprobando el código de contexto en el parámetro lKeyData.
Descripción
nVirtKey: valor del parámetro wParam. Indica el código de la tecla virtual pulsada.
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
La función DefWindowProc examina la tecla leída y genera un mensaje WM_SYSCOMMAND si la tecla es TAB o ENTER.
Observaciones
Cuando un código de contexto es cero, el mensaje puede ser pasado a la función {f.TranslateAccelerator}, que lo manejará como si fuera un mensaje normal de tecla en lugar de un mensaje de carácter de sistema. Esto permite usar aceleradores de teclado con la ventana activa aunque no tenga el foco del teclado.
A causa de la repetición automática, más de un mensaje WM_SYSKEYDOWN puede ocurrir antes de que se envíe un mensaje WM_SYSKEYUP. El estado previo de la tecla (bit 30) puede usarse para determinar si el mensaje WM_SYSKEYDOWN indica una primera pulsación o una repetición automática.
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.