Пользовательская глобальная горячая черта
-
24-09-2019 - |
Вопрос
Я пытаюсь получить пользовательский глобальный горячий ключ для моего приложения. Вот мой код приложения,
user.rc.
CONTROL "", IDC_MHOTKEY, HOTKEY_CLASS, WS_TABSTOP, 91, 86, 68, 14
Функция.cpp.
WORD wHotKey = SendDlgItemMessage(hwnd, IDC_MHOTKEY, HKM_GETHOTKEY, 0, 0);
GLOBAL_HOTKEY= wHotKey;
RegisterHotKey ( NULL, TURN_OFF_HOTKEY, HIBYTE(LOWORD(wHotKey)) , wHotKey);
main.cpp.
if ( messages.message == WM_HOTKEY && ( HIWORD ( messages.lParam ) == GLOBAL_HOTKEY) )
alert("Coming only for Single Key");
Этот код хорошо работает, только если пользователь выбирает один ключ, и не работает, когда он выбирает несколько клавиш, комбинированных, как Ctrl + F8.
Решение
Вам нужно изолировать виртуальный ключ из значения Whotkey:
RegisterHotKey ( NULL,
TURN_OFF_HOTKEY,
HIBYTE(LOWORD(wHotKey)), // Modifiers
LOBYTE(LOWORD(wHotKey)) // Virtual key
);
Не связан с StackOverflow