Всем здрасти!
Делаю примерно так:
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. Не приходит это событие, как ни катай мышу
Здравствуйте, Аноним, Вы писали:
А>Всем здрасти!
А>Делаю примерно так:
А>А>...
А>
А>Если курсор был на момент вызова этого кода над окном, WM_MOUSELEAVE прилетает, причем сразу, а не когда курсор вылезет за пределы окна.
Регулярно использую WM_MOUSELEAVE, таких проблем не было... возможно, всё-таки ошибка в коде? Там, break после WM_MOUSEMOVE не поставили... или ещё что...
А>А еще WM_MOUSEHOVER словить не получается, если tme.dwFlags == TME_HOVER. Не приходит это событие, как ни катай мышу
Её как раз не надо катать, её надо подержать некатанной в течении таймаута