GetChildAtPoint возвращает только отключенные элементы управления? - PullRequest
1 голос
/ 05 декабря 2010

Я использую следующий пример, чтобы показать всплывающую подсказку над отключенной кнопкой. Как показать подсказку на отключенной кнопке?

Кнопка находится внутри панели, и я присоединяю событие MouseMove к панели, а не к самой форме. Удивительно, но GetChildAtPoint возвращает ноль, если кнопка включена! Кнопка возвращается только тогда, когда она отключена. Я проверил расположение кнопки, и она одинакова при включении и отключении, и оба раза ее родитель является панелью.

Чтобы быть ясно; Событие MouseMove вызывается для всех элементов управления, и внутри него используется метод GetChildAtPoint. Когда кнопка включена, вызывается MouseMove, и GetChildAtPoint возвращает значение NULL. Когда он отключен, вызывается MouseMove, и GetChildAtPoint возвращает кнопку.

Я не понимаю, почему этот код работает. Спасибо за любую помощь, спасибо.

1 Ответ

5 голосов
/ 05 декабря 2010

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

...