| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > есть ли событие, "противоположное" WM_MOUSEMOVE |
| Автор: Dreamer_0x01 2.2.2007, 19:32 |
| Суть задачи. Надо отследить два различных случай - когда курсор мышки находится над окном, вызывать один вариант прорисовки, когда курсор покидает окно - вызывать другой вариант прорисовки. Вот как отследить первый случай, я еще более менее понимаю - просто хватаю событие WM_MOUSEMOVE. Но вот случай выхода курсора за границы окна пока что никак не пришло в голову реализовать, кроме как вызвав WM_MOUSEMOVE родительского окна. Но проблема в том, что во-первых, не хочется трогать родительское окно, а делать все именно в одном окошке, а во-вторых, предполагается, что мое окошко может быть не обязательно дочерним. Подскажите, плиз, как реализовать данную задачку покрасивее, или ссылкой киньте на примерчик. Спасибо. |
| Автор: _hunter 2.2.2007, 20:22 |
| http://www.rsdn.ru/article/qna/ui/mouseout.xml |
| Автор: Earnest 2.2.2007, 21:09 |
| Как сказано в приведенной статье, второй способ надежнее (через таймер). Делала так с давних пор. Потом узнала про TrackMouseEvent и возбудилась - красиво! Но, как оказалось, только выглядит: работает неустойчиво, даже на одной и той же машине, где стоит нормальная система. Т.е. в нормальном режиме вроде работает, но если начать хулиганить с мышью: быстро дергать, как-нибудь нелепо переключаться между приложениями, да еще если Capture используется - иногда не срабатывает. В отличие от таймера, который работает железно. |
| Автор: Dreamer_0x01 3.2.2007, 01:00 |
| Однако, спасибо за оперативно данные указания! ЗЫ. Приятно видеть знакомые лица. |
| Автор: Winprogrammer 14.2.2007, 16:07 |
| WM_MOUSELEAVE Notification Это сообщение посылается виндой окну, когда курсор выходит за его пределы. |
| Автор: Earnest 14.2.2007, 16:19 |
| Winprogrammer, это как раз и обсуждается в предыдущих постах: просто так MouseLeave не придет. |