Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se muestra cómo crear un control de clave activa. Puede crear un control de teclas de acceso rápido mediante la función CreateWindowEx , especificando la clase de ventana HOTKEY_CLASS.
Lo que necesita saber
Tecnologías
Requisitos previos
- C/C++
- Programación de la interfaz de usuario de Windows
Instrucciones
Antes de crear el control de tecla activa, asegúrese de que se carga el archivo DLL de controles comunes.
En el siguiente ejemplo de código de C++, la función definida por la aplicación llama a la función InitCommonControlsEx para cargar el archivo DLL de control común. A continuación, llama a la función CreateWindowEx , especificando la clase de ventana HOTKEY_CLASS , para crear un control de tecla activa. Usa el HKM_SETRULES y HKM_SETHOTKEY mensajes para inicializar el control y devuelve un identificador al control.
Este control de tecla activa no permite al usuario elegir una tecla activa que sea una sola clave sin modificar, ni permite al usuario elegir solo MAYÚS y una tecla. Estas reglas impiden que el usuario elija de forma eficaz una tecla activa que se pueda escribir accidentalmente al escribir texto.
// Creates a hot key control and sets rules and default settings for it.
//
// Returns the handle of the hot key control.
//
// Parameter
// hwndDlg - Handle of the parent window (dialog box).
//
// Global variable
// g_hinst - Handle of the application instance.
extern HINSTANCE g_hinst;
HWND WINAPI InitializeHotkey(HWND hwndDlg)
{
HWND hwndHot = NULL;
// Ensure that the common control DLL is loaded.
INITCOMMONCONTROLSEX icex; //declare an INITCOMMONCONTROLSEX Structure
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_HOTKEY_CLASS; //set dwICC member to ICC_HOTKEY_CLASS
// this loads the Hot Key control class.
InitCommonControlsEx(&icex);
hwndHot = CreateWindowEx(0, // no extended styles
HOTKEY_CLASS, // class name
TEXT(""), // no title (caption)
WS_CHILD | WS_VISIBLE, // style
15, 10, // position
200, 20, // size
hwndDlg, // parent window
NULL, // uses class menu
g_hinst, // instance
NULL); // no WM_CREATE parameter
SetFocus(hwndHot);
// Set rules for invalid key combinations. If the user does not supply a
// modifier key, use ALT as a modifier. If the user supplies SHIFT as a
// modifier key, use SHIFT + ALT instead.
SendMessage(hwndHot,
HKM_SETRULES,
(WPARAM) HKCOMB_NONE | HKCOMB_S, // invalid key combinations
MAKELPARAM(HOTKEYF_ALT, 0)); // add ALT to invalid entries
// Set CTRL + ALT + A as the default hot key for this window.
// 0x41 is the virtual key code for 'A'.
SendMessage(hwndHot,
HKM_SETHOTKEY,
MAKEWORD(0x41, HOTKEYF_CONTROL | HOTKEYF_ALT),
0);
return hwndHot;
}
Temas relacionados