2011-01-10 4 views
2

У меня есть (родительское) окно, в котором дочернее окно создается другой библиотекой (Ogre3d). Инициализация окна использует пустой API Win32.Захват событий WM_MOUSEMOVE в родительском окне

Я хотел бы захватить ввод мыши в своем родительском окне, но кажется, что мои события WM_MOUSEMOVE получены только дочерним окном, что имеет смысл, поскольку это заполняет всю мою клиентскую область.

Есть ли способ захватить сообщения WM_MOUSEMOVE в родительском окне или (неинтузивно) перенаправить эти сообщения из дочернего окна?

+0

С помощью Spy ++ вы можете проверить, что ваше родительское окно когда-либо получает сообщения мыши? Похоже, в этом случае это никогда не будет. –

ответ

4

Если вы можете получить ручку к рассматриваемому окну, вы можете subclass.

В двух словах вы можете зарегистрировать функцию обратного вызова, которая получает трещины во всех сообщениях, отправленных в подклассифицированное окно.

Связанная статья должна содержать вас, где вам нужно быть.

+5

Я рекомендую перехватить 'WM_NCHITTEST' и заставить его всегда возвращать' HTTRANSPARENT'. Затем родитель получит сообщения WM_MOUSEMOVE, и вам не нужно будет переводить координаты. – finnw

+0

Спасибо, вы двое! Это сработало красиво. – ltjax

Смежные вопросы