Я программирую действительно простое приложение MFC C ++, которое работает с горячими клавишами. Чтобы установить HotKey, я использую следующий метод из WinAPI для моего приложения:
BOOL RegisterHotKey(
HWND hWnd, // window to receive hot-key notification
int id, // identifier of hot key
UINT fsModifiers, // key-modifier flags
UINT vk // virtual-key code
);
Чтобы поймать любое сообщение HotKey, которое я использую: ON_MESSAGE(WM_HOTKEY,OnHotKey)
в карте сообщений и в этом методе обратного вызова для проверки его функциональности:
LRESULT OnHotKey(WPARAM wParam, LPARAM lParam)
{
if (wParam == MY_HOTKEY_KEY_CODE)
{
MessageBox(L"HotKey was pressed!");
return TRUE;
}
return FALSE;
}
Когда горячая клавиша нажата, она входит в OnHotKey
Метод и не обрабатывает ключ нормально. Например, если я напишу какой-нибудь текст в Блокноте и нажму «O» как HotKey, «O» не добавится к моему тексту, но сообщение «HotKey нажата!» появляется, что приятно.
Но когда я нахожусь в любой игре Direct X и нажимаю горячую клавишу, она не отправляется в мое приложение. Также при наборе чего-либо в среде Direct X HotKey просто работает как обычная клавиша.
Связывает ли Direct X все ключевые входы? Есть ли способ заставить Windows HotKeys работать со средами Direct X?
Задача ещё не решена.