Acerca de los controles de teclas activas

Un control de tecla activa es una ventana que permite al usuario escribir una combinación de pulsaciones de teclas que se usarán como tecla activa. Una tecla activa es una combinación de teclas que el usuario puede presionar para realizar una acción rápidamente. Por ejemplo, un usuario puede crear una tecla activa que active una ventana determinada y la lleve a la parte superior del orden z. El control de tecla activa muestra las opciones del usuario y garantiza que el usuario seleccione una combinación de teclas válida. En la captura de pantalla siguiente se muestra cómo aparece un control de tecla activa en un cuadro de diálogo después de que el usuario presione la tecla Alt.

captura de pantalla de un cuadro de diálogo que contiene un control de tecla activa

Uso de controles de teclas activas

Cuando el usuario escribe una combinación de teclas que se va a usar como tecla activa, los nombres de las teclas aparecen en el control de tecla activa. Una combinación de teclas puede constar de una tecla modificadora (como CTRL, ALT o MAYÚS) y una tecla adjunta (como una tecla de carácter, una tecla de dirección, una tecla de función, etc.).

Una vez que el usuario ha elegido una combinación de teclas, la aplicación recupera la combinación de teclas del control de tecla activa y la usa para configurar una tecla activa en el sistema. La información recuperada del control de tecla activa incluye una marca que indica la clave modificadora y el código de clave virtual de la clave adjunta.

La aplicación puede usar la información proporcionada por un control de clave activa para configurar una clave activa global o una clave activa específica del subproceso. Una tecla de acceso rápido global está asociada a una ventana determinada; permite al usuario activar la ventana desde cualquier parte del sistema. Una aplicación establece una clave activa global mediante el mensaje WM_SETHOTKEY . Cada vez que el usuario presiona una tecla activa global, la ventana especificada en WM_SETHOTKEY recibe un mensaje de WM_SYSCOMMAND que especifica el valor de SC_HOTKEY . Este mensaje activa la ventana que lo recibe. La tecla de acceso rápido sigue siendo válida hasta que se cierra la aplicación que llamó a WM_SETHOTKEY .

Una clave activa específica del subproceso genera un mensaje de WM_HOTKEY que se publica al principio de un subproceso determinado para que se quite mediante la siguiente iteración del bucle de mensajes. Una aplicación establece una clave activa específica del subproceso mediante la función RegisterHotKey .

Mensajes de control de teclas activas

Después de crear un control de clave activa, una aplicación interactúa con él mediante tres mensajes: HKM_SETRULES, HKM_SETHOTKEY y HKM_GETHOTKEY.

Una aplicación puede enviar el mensaje HKM_SETRULES para especificar un conjunto de combinaciones de teclas CTRL, ALT y MAYÚS que se consideran teclas de acceso rápido no válidas. Si la aplicación especifica una combinación de teclas no válida, también debe especificar una combinación de modificador predeterminada que se usará cuando el usuario seleccione la combinación no válida. Cuando el usuario escribe la combinación no válida, el sistema realiza una operación OR lógica en la combinación no válida y la combinación predeterminada. El resultado se considera una combinación válida; se convierte en una cadena y se muestra en el control .

El mensaje HKM_SETHOTKEY permite a una aplicación establecer la combinación de teclas activas para un control de tecla activa. Este mensaje también se usa normalmente cuando se crea el control de teclas activas.

Las aplicaciones usan el mensaje HKM_GETHOTKEY para recuperar el código de clave virtual y las marcas modificadores de la clave activa elegida por el usuario.

Notificaciones de control de teclas activas

El control de teclas de acceso rápido no envía ningún código de notificación a través del mensaje WM_NOTIFY . Sin embargo, enviará la notificación EN_CHANGE a través del mensaje WM_COMMAND cuando el usuario cambie el contenido del control.

Procesamiento predeterminado de mensajes de clave activa

En esta sección se describen los mensajes de ventana que controla el procedimiento de ventana para la clase de ventana de HOTKEY_CLASS predefinida que se usa con controles de teclas activas.

Message Procesamiento realizado
WM_CHAR Recupera el código de clave virtual.
WM_CREATE Inicializa el control de teclas activas, borra las reglas de teclas activas y usa la fuente del sistema.
WM_ERASEBKGND Oculta el símbolo de intercalación, llama a la función DefWindowProc y muestra el símbolo de intercalación de nuevo.
WM_GETDLGCODE Devuelve una combinación de los valores DLGC_WANTCHARS y DLGC_WANTARROWS .
WM_GETFONT Recupera la fuente.
WM_KEYDOWN Llama a la función DefWindowProc si la clave es ENTER, TAB, SPACE BAR, DEL, ESC o BACKSPACE. Si la tecla es MAYÚS, CTRL o ALT, comprueba si la combinación es válida y, si es así, establece la tecla activa mediante la combinación. Todas las demás claves se establecen como claves de acceso rápido sin que se compruebe primero su validez.
WM_KEYUP Recupera el código de clave virtual.
WM_KILLFOCUS Destruye el símbolo de intercalación.
WM_LBUTTONDOWN Establece el foco en la ventana.
WM_NCCREATE Establece el estilo de ventana de WS_EX_CLIENTEDGE .
WM_PAINT Pinta el control de tecla activa.
WM_SETFOCUS Crea y muestra el símbolo de intercalación.
WM_SETFONT Establece la fuente.
WM_SYSCHAR Recupera el código de clave virtual.
WM_SYSKEYDOWN Llama a la función DefWindowProc si la clave es ENTER, TAB, SPACE BAR, DEL, ESC o BACKSPACE. Si la tecla es MAYÚS, CTRL o ALT, comprueba si la combinación es válida y, si es así, establece la tecla activa mediante la combinación. Todas las demás claves se establecen como claves de acceso rápido sin que se compruebe primero su validez.
WM_SYSKEYUP Recupera el código de clave virtual.