Compartir a través de


Cómo crear un control de clave activa

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; 
}

Referencia de control de teclas activas

Acerca de los controles de clave activa

Uso de controles de teclas activas