WM_MOUSELEAVE прилетает, когда курсор еще над окном
От: Аноним  
Дата: 19.01.11 20:46
Оценка:
Всем здрасти!

Делаю примерно так:

ShowWindow(hWnd);

RECT rc;
GetWindowRect(&rc);
POINT pt;
GetCursorPos(&pt);

TRACKMOUSEEVENT tme;
tme.cbSize = sizeof tme;
tme.hwndTrack = hWnd;
tme.dwHoverTime = 100;

tme.dwFlags =  PtInRect(&rc, pt) ? TME_LEAVE : TME_HOVER;

TrackMouseEvent(&tme);


Если курсор был на момент вызова этого кода над окном, WM_MOUSELEAVE прилетает, причем сразу, а не когда курсор вылезет за пределы окна.

А еще WM_MOUSEHOVER словить не получается, если tme.dwFlags == TME_HOVER. Не приходит это событие, как ни катай мышу
Re: WM_MOUSELEAVE прилетает, когда курсор еще над окном
От: CEMb  
Дата: 20.01.11 06:05
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем здрасти!


А>Делаю примерно так:


А>
А>...
А>


А>Если курсор был на момент вызова этого кода над окном, WM_MOUSELEAVE прилетает, причем сразу, а не когда курсор вылезет за пределы окна.


Регулярно использую WM_MOUSELEAVE, таких проблем не было... возможно, всё-таки ошибка в коде? Там, break после WM_MOUSEMOVE не поставили... или ещё что...

А>А еще WM_MOUSEHOVER словить не получается, если tme.dwFlags == TME_HOVER. Не приходит это событие, как ни катай мышу


Её как раз не надо катать, её надо подержать некатанной в течении таймаута
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.