Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

Re: MouseEnter/MouseLeave ohne VCL!

  Alt 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.
  Mit Zitat antworten Zitat