WM_MOUSEMOVE/wParam не содержит состояние клавиши, только при нажатии любой кнопки мыши

Я использую окно WS_EX_LAYERED и получаю сообщение WM_MOUSEMOVE, когда мышь перемещается по непрозрачным областям. Все идет нормально.

  • Когда я нажимаю и удерживаю SHIFT или CTRL и перемещаю мышь, WM_MOUSEMOVE/wParam не указывает состояние клавиши.

  • Когда я нажимаю и удерживаю SHIFT или CTRL и ЛЮБЫЕ кнопки мыши при перемещении мыши, WM_MOUSEMOVE/wParam указывает состояние клавиши.

  • Когда я нажимаю на окно (предполагая, что устанавливаю фокус) и удерживаю SHIFT или CTRL, опять же, WM_MOUSEMOVE/wParam не указывает состояние клавиши.

Есть идеи, что здесь происходит? У меня есть подозрение, что это как-то связано с активным состоянием фокуса окна.

1 ответ

Я считаю, что если вам нужно получить ввод, когда ваше окно не в фокусе, вам придется использовать это:

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowshookexa?redirectedfrom=MSDN

кроме этого, если вы просто двигаете мышью, вы можете предположить, что состояние клавиши не изменилось, не так ли?

Другие вопросы по тегам