Thema: MpuAboutWnd

Einzelnen Beitrag anzeigen

Olli
(Gast)

n/a Beiträge
 
#10

Re: MpuAboutWnd

  Alt 7. Jan 2007, 22:50
Zitat von Luckie:
Aber ich bekomme kein WM_CREATE.
Das wäre ja nicht unbedingt nötig. Dein vorhandener Code hätte ja bequem umgeschrieben werden können:

Delphi-Quellcode:
case uMsg of
    WM_MOUSELEAVE:
      if WindowHover then
      begin
        // reset state
        WindowHover := False;
        LinkFontHover := GetProp(hLinkStc, 'LinkFontHover');
        if LinkFontHover = 0 then
        begin
          // create and set font
          LinkFontHover := CreateFont(-MulDiv(LINKFONTSIZE, GetDeviceCaps(GetDC(hLinkStc), LOGPIXELSY), 72), 0, 0, 0, 400,
            0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, LINKFONTNAME);
          // save handle as a window property
          SetProp(hLinkStc, 'LinkFontHover', LinkFontHover);
        end;
        SendMessage(hLinkStc, WM_SETFONT, Integer(LinkFontHover), Integer(true));
      end;
    WM_MOUSEMOVE:
      if not WindowHover then
      begin
        // save state
        WindowHover := True;
        LinkFontNonHover := GetProp(hLinkStc, 'LinkFontNonHover');
        if LinkFontNonHover = 0 then
        begin
        // create and set font
          LinkFontNonHover := CreateFont(-MulDiv(LINKFONTSIZE, GetDeviceCaps(GetDC(hLinkStc), LOGPIXELSY), 72), 0, 0, 0,
            400, 0, 1, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH,
            LINKFONTNAME);
          // save the handle as a window property
          SetProp(hLinkStc, 'LinkFontNonHover', LinkFontNonHover);
        end;
        SendMessage(hLinkStc, WM_SETFONT, Integer(LinkFontNonHover), Integer(true));
        // track WM_MOUSELEAVE
        EventTrack.cbSize := SizeOf(EventTrack);
        EventTrack.dwFlags := TME_LEAVE;
        EventTrack.hwndTrack := hLinkStc;
        EventTrack.dwHoverTime := HOVER_DEFAULT;
        TrackMouseEvent(EventTrack);
      end;
Wenn man jetzt noch die Literale als Konstanten deklariert, hat man sogar die Namen der Properties definitiv nur einmal in der EXE/DLL/wasauchimmer.
  Mit Zitat antworten Zitat