Поделиться через


Как создать элемент управления горячей клавишей

В этом разделе показано, как создать элемент управления горячим ключом. Вы создаете элемент управления горячим ключом с помощью функции CreateWindowEx, указав класс окна HOTKEY_CLASS.

Что нужно знать

Технологии

Необходимые условия

  • C/C++
  • Программирование пользовательского интерфейса Windows

Инструкции

Перед созданием элемента управления горячим ключом убедитесь, что библиотека DLL общих элементов управления загружена.

В следующем примере кода C++ определяемая приложением функция вызывает функцию InitCommonControlsEx для загрузки библиотеки DLL общего элемента управления. Затем он вызывает функцию CreateWindowEx, указав класс окна HOTKEY_CLASS, чтобы создать элемент управления горячим ключом. Он использует сообщения HKM_SETRULES и HKM_SETHOTKEY для инициализации элемента управления и возвращает дескриптор элемента управления.

Этот элемент управления горячим ключом не позволяет пользователю выбирать горячий ключ, который является одним немодифицированным ключом, и не позволяет пользователю выбирать только SHIFT и ключ. Эти правила эффективно препятствуют выбору горячего ключа, который может быть введен случайно при вводе текста.

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

справочник по элементу управления горячими ключами

О горячих клавишах управления

Использование горячих клавиш