hallo
ich erzeuge mittels shell_notify ein trayicon. nun moechte ich fuer das trayicon einen mouseenter und einen mouseleave event haben. ich habe
den ganzen vormittag aufgrund eines beispieles von luckie rumprobiert und komme nicht weiter. ich habe es jetzt so versucht. mein problem ist, das
wm_mouseleave nicht eintritt. ich habe mit winsight gecheckt ob wm_mouseleave(0x2A3) auch gefeuert wird, und es ist soweit ok. die massage.lparamlo abfrage hatte ich auch schonmal komplett umgekrempelt. ich glaube naehmlich , das ich bei wm_mouseleave auf Message.MSG abfragen muss, denn bei wm_mouseleave sind alle
parameter laut
MSDN mit dem wert 0 versehen. nur wie gesagt wm_mouseleave tritt nie ein bzw. der programhalt wird nicht durchgefuert.
hoffe das mir jemand helfen kann. danke fuer eure zeit.
richard
Delphi-Quellcode:
Procedure TForm1.WMTaskBarEvent(
Var Message: TMessage);
Var
Pt : TPoint;
eventtrack: TTrackMouseEvent;
result:longbool;
Begin
Case Message.LParamLo
Of
WM_LBUTTONDown :
Begin
if PopupactionbarEx1.MenuActive
then PopupactionbarEx1.PopupMenu.CloseMenu;
End;
WM_RBUTTONDown :
Begin
SetForegroundWindow(
Handle);
PostMessage(
Handle, WM_NULL, 0, 0);
GetCursorPos(Pt);
if PopupactionbarEx1.menuactive=false
then PopupactionbarEx1.Popup(Pt.x, Pt.y-10)
else PopupactionbarEx1.PopupMenu.BringToFront;
End;
WM_LBUTTONDBLCLK:
Begin
// nochnix
End;
WM_MOUSEmove:
Begin
EventTrack.dwFlags := TME_LEAVE;
EventTrack.hwndTrack :=
Handle;
EventTrack.cbSize := SizeOf(EventTrack);
result:=TrackMouseEvent(EventTrack);
End;
WM_Mouseleave:
Begin
halt;
//nur um zu sehen ob es geht
End;
End;
End;