Все вроде бы ничего, но почему-то это не работает, когда курсор водится над дочерними окнами. Нужно в них создать обработчик и пересылать родителю сообщение? Помимо этого, с выходом из окна еще хуже. Пишу вот так:
| Код | void CACADDialog::OnMouseMove( UINT nFlags, CPoint point ) { TRACKMOUSEEVENT tme; tme.cbSize = sizeof(tme); tme.hwndTrack = GetSafeHwnd(); tme.dwFlags = TME_LEAVE; TrackMouseEvent(&tme);
//Некие действия __super::OnMouseMove(nFlags, point); }
|
Отлавливаю ON_WM_MOUSELEAVE, отлавливается, но тож редко (опять же, возможно из-за того, что родительское окно загромождено дочерними), или так:
| Код | void CACADDialog::OnMouseMove( UINT nFlags, CPoint point ) { CRect rect; GetClientRect( &rect ); if( rect.PtInRect( point ) ) { SetCapture(); //Некие действия } else { ReleaseCapture(); //Некие действия } __super::OnMouseMove(nFlags, point); }
|
тут предпологается, что весь MOUSEInput будет приходить ко мне, пока мы не вылезли из окошка - тож не так работает. |