Сведения о элементах управления горячими ключами
Элемент управления горячим ключом — это окно, позволяющее пользователю вводить сочетание нажатий клавиш, которые будут использоваться в качестве горячего ключа. Горячий ключ — это сочетание клавиш, которое пользователь может нажать, чтобы быстро выполнить действие. Например, пользователь может создать горячий ключ, который активирует заданное окно и приведет его в начало z-порядка. Элемент управления горячим ключом отображает выбор пользователя и гарантирует, что пользователь выбирает допустимое сочетание ключей. На следующем снимке экрана показано, как элемент управления горячим ключом отображается в диалоговом окне после нажатия клавиши ALT.
Использование элементов управления горячими ключами
Когда пользователь вводит сочетание клавиш для использования в качестве горячего ключа, имена ключей отображаются в элементе управления горячим ключом. Сочетание клавиш может состоять из модификатора (например, 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 | Извлекает код виртуального ключа. |