Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе показано, как создать элемент управления горячим ключом. Вы создаете элемент управления горячим ключом с помощью функции 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;
}
Связанные разделы