Registriert seit: 29. Mai 2002
37.621 Beiträge
Delphi 2006 Professional
|
Re: MouseEnter/MouseLeave ohne VCL!
5. Jan 2007, 23:30
So jetzt habe ich das Static ge-subclassed:
Delphi-Quellcode:
function LinkStcWndProc(hLinkStc, uMsg, wParam, lParam: DWORD): DWORD; stdcall;
var
LinkFont : HFONT;
EventTrack : TTrackMouseEvent;
begin
Result := 0;
case uMsg of
WM_MOUSELEAVE:
begin
WindowHover := False;
LinkFont := CreateFont(LINKFONTSIZE, 0, 0, 0, 400, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, LINKFONTNAME);
if LinkFont <> 0 then
SendMessage(hLinkStc, WM_SETFONT, Integer(LinkFont), Integer(true));
end;
WM_MOUSEMOVE:
begin
WindowHover := True;
LinkFont := CreateFont(LINKFONTSIZE, 0, 0, 0, 400, 0, 1, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, LINKFONTNAME);
if LinkFont <> 0 then
SendMessage(hLinkStc, WM_SETFONT, Integer(LinkFont), Integer(true));
EventTrack.cbSize := SizeOf(EventTrack);
EventTrack.dwFlags := TME_LEAVE;
EventTrack.hwndTrack := hLinkStc;
EventTrack.dwHoverTime := HOVER_DEFAULT;
TrackMouseEvent(EventTrack);
end;
else
Result := CallWindowProc(OldStcWndProc, hLinkStc, uMsg, wParam, lParam);
end;
end;
Das funktioniert auch, nur bekomme ich keine WM_MOUSEMOVE Nachrichten, wenn ich über das Static fahre mit der Maus. Alle anderen Nachrichten kommen an. Aber warum keine WM_MOUSEMOVE?
Michael Ein Teil meines Codes würde euch verunsichern.
|