My WndProc не видит уведомления о подключении при нажатии клавиши модификатора (сдвига или управления). Я вижу их без ключа-модификатора, и я вижу уведомления с указателем мыши с помощью клавиш-модификаторов.Как я могу получить события мыши, когда обернутый элемент управления установил захват?
Я пытаюсь отслеживать действия пользователя в компоненте, который я не писал, поэтому я использую оболочку Windows Forms NativeWindow (обертывание компонента), чтобы получить сообщения Windows из метода WndProc().
Я пробовал отслеживать уведомления, которые я получаю, и я единственный ключ, который я вижу, это WM_CAPTURECHANGED. Я попытался вызвать SetCapture, когда получаю сообщение WM_LBUTTONDOWN, но это не помогает.
Без модификатора (пропуская краску, таймер и сообщения NCHITTEST):
WM_PARENTNOTIFY
WM_MOUSEACTIVATE
WM_MOUSEACTIVATE
WM_SETCURSOR
WM_LBUTTONDOWN
WM_SETCURSOR
WM_MOUSEMOVE
WM_SETCURSOR
WM_LBUTTONUP
С модификатором (пропуском краску, таймер и сообщения NCHITTEST):
WM_KEYDOWN
WM_PARENTNOTIFY
WM_MOUSEACTIVATE
WM_MOUSEACTIVATE
WM_SETCURSOR
WM_LBUTTONDOWN
WM_SETCURSOR (repeats)
WM_KEYDOWN (repeats)
WM_KEYUP
Если я держу кнопку мыши для долгое время, я обычно могу получить уведомление WM_LBUTTONUP, но должно быть возможно сделать его более отзывчивым.
Редактировать: Я попытался щелкнуть правой кнопкой мыши за пределами представляющую интерес, и перемещая курсор в него, прежде чем отпускать кнопку мыши, а затем я получаю уведомление WM_LBUTTONUP, поэтому он выглядит так, как компонент захватывает мышь при наведении указателя мыши. Есть ли способ получить это уведомление, когда другое окно захватило мышь?
Спасибо.
Нет воспроизведения, конечно. Почему вы используете NativeWindow? Почему в вашем списке WM_MOUSEACTIVATE? Окно должно быть активировано. –
Я использую NativeWindow для захвата сообщений от компонента, который я не писал. Я не знаю, почему есть WM_MOUSEACTIVATE. Насколько я могу судить, окно уже активировано. Похоже, перед сообщением WM_LBUTTONDOWN есть два сообщения WM_MOUSEACTIVATE, если я нажимаю клавишу модификатора. Я не изначально перечислял их в первом списке событий. – Greg