2010-05-22 14 views
7

Zasadniczo wywołuję TrackMouseEvent w moim WM_CREATE, a następnie wywołuję go ponownie po WM_MOUSELEAVE, ale to zawiesza mój program. Gdzie powinienem go trzymać? DziękiTrackMouseEvent nie działa

Odpowiedz

13

Musisz zadzwonić pod numer TrackMouseEvent, gdy mysz wejdzie do Twojej kontroli, a nie wtedy, gdy opuszcza Twoją kontrolę.

Możesz zadzwonić pod numer TrackMouseEvent w wiadomości WM_MOUSEMOVE. Nie musisz dzwonić pod numer TrackMouseEvent za każdym razem, gdy WM_MOUSEMOVE jest uruchamiany, tylko raz, dopóki nie otrzymasz kolejnego WM_MOUSELEAVE. Po uzyskaniu numeru WM_MOUSELEAVE możesz ustawić flagę, aby kolejne połączenie z numerem WM_MOUSEMOVE zadzwoniło ponownie pod numer TrackMouseEvent.

Zasadniczo można emulować fikcyjną wersję WM_MOUSEENTER przy użyciu WM_MOUSEMOVE, a także ustawić tę flagę.

+0

Jakie jest to wydarzenie? – jmasterx

+0

@ user146780: Zobacz edycję –