TrackMouseEvent

Wohl das A & O in der Windows-Programmierung

Moderatoren: crack, Marwin, Krüsty

Antworten
Rainer
Alter Hase
Beiträge: 81
Registriert: Freitag 21. Juli 2006, 14:39
Wohnort: Senftenberg
Kontaktdaten:

TrackMouseEvent

Beitrag von Rainer » Montag 18. Februar 2008, 16:59

Hallo,

ich möchte über einem Ownerdraw-Button reagieren, wenn sich der Mauscursor über dem Button befindet. Das ist so mit WM_DRAWITEM nicht lösbar, also habe ich's jetzt mit TrackMouseEvent probiert.
Die Struktur TRACKMOUSEEVENT habe ich global declariert, bei WM_CREATE habe ich nach der Erzeugung des Buttons die Struktur gefüllt

(global)
tme TRACKMOUSEEVENT <>

(WndProc, WM_CREATE)
mov tme.cbSize, sizeof tme
mov tme.dwFlags, TME_HOVER or TME_LEAVE
mov tme.hwndTrack, eax ;eax = Handle des Btns
mov tme.dwHoverTime, HOVER_DEFAULT
invoke TrackMouseEvent, addr tme

und warte nun in der WndProc, leider vergeblich, auf WM_MOUSEHOVER bzw. WM_MOUSELEAVE, wenn ich mit der Maus über dem Button bin. Weiß jemand, was ich da falsch mache?

Gruß Rainer

Benutzeravatar
crack
Administrator
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf
Kontaktdaten:

Re: TrackMouseEvent

Beitrag von crack » Dienstag 9. Dezember 2008, 01:36

Axo, ich glaube Du musst WM_MOUSEOVER bzw. WM_MOUSELEAVE in der MessageLoop abfangen und nicht in der WndProc ...
mit freundlichen grüssen,
with best regards,

crack

Rainer
Alter Hase
Beiträge: 81
Registriert: Freitag 21. Juli 2006, 14:39
Wohnort: Senftenberg
Kontaktdaten:

Re: TrackMouseEvent

Beitrag von Rainer » Donnerstag 16. Juli 2009, 18:26

Hallo crack,

danke, mit Subclassing ging's dann auch..

Gruß Rainer

Antworten