![]() |
Re: MpuAboutWnd
Zitat:
Zitat:
|
Re: MpuAboutWnd
Zitat:
:gruebel: Kannst du uns allen auch mal das hier erklären?:
Code:
Mir erschließt sich im Moment nämlich nicht, wieso du bei jedem Mal einen neuen Font erstellst und den alten überschreibst ohne vorher das Handle freizugeben ...
case uMsg of
WM_MOUSELEAVE: if WindowHover then begin // reset state WindowHover := False; // create and set font [color=red]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);[/color] if LinkFontHover <> 0 then begin // save handle as a window property [color=red]SetProp(hLinkStc, 'LinkFontHover', LinkFontHover); SendMessage(hLinkStc, WM_SETFONT, Integer(LinkFontHover), Integer(true));[/color] end; end; WM_MOUSEMOVE: if not WindowHover then begin // save state WindowHover := True; // create and set font [color=red]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);[/color] if LinkFontNonHover <> 0 then begin // save the handle as a window property [color=red]SetProp(hLinkStc, 'LinkFontNonHover', LinkFontNonHover); SendMessage(hLinkStc, WM_SETFONT, Integer(LinkFontNonHover), Integer(true));[/color] end; // track WM_MOUSELEAVE EventTrack.cbSize := SizeOf(EventTrack); EventTrack.dwFlags := TME_LEAVE; EventTrack.hwndTrack := hLinkStc; EventTrack.dwHoverTime := HOVER_DEFAULT; TrackMouseEvent(EventTrack); end; Da wäre noch einiges zu kommentieren, habe ich aber im Moment weder Zeit noch Lust zu ... ewige Dunkelheit macht depressiv. |
Re: MpuAboutWnd
Hm, jetzt, wo du es sagst.
Ess Schokolade, dass macht glücklich. |
Re: MpuAboutWnd
Zitat:
Zitat:
Davon habe ich noch nie etwas gehört. (Hab es halt mit AboutWnd.ShowAboutWnd(Application.Handle);) gemacht. |
Re: MpuAboutWnd
Zitat:
|
Re: MpuAboutWnd
Zitat:
|
Re: MpuAboutWnd
Ja, nur ging ich davon aus, das ich das Handle der Anwenung bekomme nicht von irgend ner Form.
|
Re: MpuAboutWnd
Ich wollte es jetzt so machen:
Delphi-Quellcode:
Aber ich bekomme kein WM_CREATE. :gruebel:
WM_CREATE:
begin // create fonts LinkFontHover := 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 handle as a window property SetProp(hLinkStc, 'LinkFontHover', LinkFontHover); LinkFontNonHover := 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 the handle as a window property SetProp(hLinkStc, 'LinkFontNonHover', LinkFontNonHover); end; WM_MOUSELEAVE: begin if WindowHover then begin // reset state WindowHover := False; // set font SendMessage(hLinkStc, WM_SETFONT, GetProp(hLinkStc, 'LinkFontNonHover'), Integer(true)); end; end; WM_MOUSEMOVE: if not WindowHover then begin // save state WindowHover := True; // set font SendMessage(hLinkStc, WM_SETFONT, GetProp(hLinkStc, 'LinkFontHover'), Integer(true)); // track WM_MOUSELEAVE EventTrack.cbSize := SizeOf(EventTrack); EventTrack.dwFlags := TME_LEAVE; EventTrack.hwndTrack := hLinkStc; EventTrack.dwHoverTime := HOVER_DEFAULT; TrackMouseEvent(EventTrack); end; WM_DESTROY: begin // delete objects and remove properties from the window property list DeleteObject(GetProp(hLinkStc, 'LinkFontNonHover')); RemoveProp(hLinkStc, 'LinkFontNonHover'); DeleteObject(GetProp(hLinkStc, 'LinkFontHover')); RemoveProp(hLinkStc, 'LinkFontHover'); end; Ich habe die Font Handles erstmal global gemacht, damit der Fehler zumindest raus ist. |
Re: MpuAboutWnd
Also, das mit dem Anzeigen funktioniert jetzt bei mir. Hatte tatsächlich ein falsches Handle zugewiesen. Ich find's sehr gut. Eines finde ich noch etwas störend:
Wenn ich in der File-Description einen etwas längeren Text einfüge, wird ab einer gewissen Zeilenanzahl der Text überdeckt. :gruebel: Ich werde mal im trial and error Verfahren versuchen, ob ich die Passage im Quelltext finde. Gruß Calculon -- |
Re: MpuAboutWnd
Zitat:
Delphi-Quellcode:
Wenn man jetzt noch die Literale als Konstanten deklariert, hat man sogar die Namen der Properties definitiv nur einmal in der EXE/DLL/wasauchimmer.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz