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

Элемент управления горячим ключом — это окно, позволяющее пользователю вводить сочетание нажатий клавиш, которые будут использоваться в качестве горячего ключа. Горячий ключ — это сочетание клавиш, которое пользователь может нажать, чтобы быстро выполнить действие. Например, пользователь может создать горячий ключ, который активирует заданное окно и приведет его в начало z-порядка. Элемент управления горячим ключом отображает выбор пользователя и гарантирует, что пользователь выбирает допустимое сочетание ключей. На следующем снимке экрана показано, как элемент управления горячим ключом отображается в диалоговом окне после нажатия клавиши ALT.

screen shot of a dialog box that contains a hot key control

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

Когда пользователь вводит сочетание клавиш для использования в качестве горячего ключа, имена ключей отображаются в элементе управления горячим ключом. Сочетание клавиш может состоять из модификатора (например, CTRL, ALT или SHIFT) и сопровождающего ключа (например, символьного ключа, клавиши со стрелкой, ключа функции и т. д.).

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

Приложение может использовать сведения, предоставленные элементом управления горячим ключом, для настройки глобального горячего ключа или горячего ключа для конкретного потока. Глобальный горячий ключ связан с определенным окном; он позволяет пользователю активировать окно из любой части системы. Приложение задает глобальный горячий ключ с помощью сообщения WM_SETHOTKEY. Когда пользователь нажимаетглобальный горячий ключ, окно, указанное в WM_SETHOTKEY, получает сообщение WM_SYSCOMMAND, указывающее значение SC_HOTKEY. Это сообщение активирует окно, которое получает его. Горячий ключ остается допустимым до тех пор, пока приложение, вызываемое WM_SETHOTKEY , не завершится.

Горячий ключ для конкретного потока создает сообщение WM_HOTKEY , размещенное в начале определенного потока, чтобы оно было удалено следующим итерацией цикла сообщений. Приложение задает горячий ключ для конкретного потока с помощью функции RegisterHotKey.

Сообщения управления горячими ключами

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

Приложение может отправить сообщение HKM_SETRULES , чтобы указать набор сочетаний клавиш CTRL, ALT и SHIFT, которые считаются недопустимыми горячими ключами. Если приложение указывает недопустимое сочетание ключей, оно также должно указать сочетание модификаторов по умолчанию, которое будет использоваться, когда пользователь выбирает недопустимое сочетание. Когда пользователь вводит недопустимое сочетание, система выполняет логическую операцию OR для недопустимого сочетания и сочетания по умолчанию. Результат считается допустимым сочетанием; он преобразуется в строку и отображается в элементе управления.

Сообщение HKM_SETHOTKEY позволяет приложению задать сочетание горячих ключей для элемента управления горячим ключом. Это сообщение также обычно используется при создании элемента управления горячим ключом.

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

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

Элемент управления горячим ключом не отправляет коды уведомлений через сообщение WM_NOTIFY. Однако при изменении содержимого элемента управления пользователь отправит уведомление EN_CHANGE через сообщение WM_COMMAND.

Обработка сообщений горячего ключа по умолчанию

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

Message Обработка выполнена
WM_CHAR Извлекает код виртуального ключа.
WM_CREATE Инициализирует элемент управления горячим ключом, очищает все правила горячего ключа и использует системный шрифт.
WM_ERASEBKGND Скрывает курсор, вызывает функцию DefWindowProc и снова отображает подсказку.
WM_GETDLGCODE Возвращает сочетание значений DLGC_WANTCHARS и DLGC_WANTARROWS.
WM_GETFONT Извлекает шрифт.
WM_KEYDOWN Вызывает функцию DefWindowProc, если ключ — ВВОД, TAB, ПРОБЕЛ, DEL, ESC или BACKSPACE. Если ключ является SHIFT, CTRL или ALT, он проверка, является ли сочетание допустимым и, если это так, задает горячий ключ с помощью сочетания. Все остальные ключи задаются как горячие ключи без их проверка сначала.
WM_KEYUP Извлекает код виртуального ключа.
WM_KILLFOCUS Уничтожает сторожку.
WM_LBUTTONDOWN Задает фокус в окне.
WM_NCCREATE Задает стиль окна WS_EX_CLIENTEDGE.
WM_PAINT Закрашивает элемент управления горячим ключом.
WM_SETFOCUS Создает и отображает подсказку.
WM_SETFONT Задает шрифт.
WM_SYSCHAR Извлекает код виртуального ключа.
WM_SYSKEYDOWN Вызывает функцию DefWindowProc, если ключ — ВВОД, TAB, ПРОБЕЛ, DEL, ESC или BACKSPACE. Если ключ является SHIFT, CTRL или ALT, он проверка, является ли сочетание допустимым и, если это так, задает горячий ключ с помощью сочетания. Все остальные ключи задаются как горячие ключи без их проверка сначала.
WM_SYSKEYUP Извлекает код виртуального ключа.