![]() |
Die Position von einem Window auf seinem Parent ermitteln
Hallo Leute,
zunächst ersteinmmal allen ein gesundes neues Jahr! :party: Ich habe mal wieder eine Frage für euch! :zwinker: Ich möchte die Position von einem Window auf einem anderen Window(seinem Parent) ermitteln um das richtige Rect für InvalidateRect zu bekommen! Da ich das ziemlich oft machen muss, stresst meine jetztige Lösung doch ganz schön die CPU! :gruebel: Also hier erstmal meine bisherige Lösung:
Delphi-Quellcode:
Ich habe mir für nonVCL eine kleine "Komponente" geschrieben die Bilder anzeigen und der man z.b.: eine onClick Procedure zuweisen kann! Das Oben ist eine OnClick-Procedure für mehrere (aber gleiche) Komponenten! Nun ändere ich beim Click das Bild in der Komponente und zeichne sie neu!
var
HKButtons : array [0..6] of HWND; ... procedure KButtonsClick(wnd: HWND); var i : integer; PRect: TRect; Rect: TRect; R: TRect; begin for I := 0 to 7 - 1 do begin if HKButtons[i] = wnd then begin GetWindowRect(GetParent(HKButtons[i]),PRect); GetWindowRect(HKButtons[i],Rect); R.Left:= Rect.Left-PRect.Left; R.Top:= Rect.Top-PRect.Top; R.Right:= R.Left + (Rect.Right - Rect.Left); R.Bottom:= R.Top + (Rect.Bottom - Rect.Top); SendMessage(HKButtons[i],WM_DSIMAGESETICON ,hIcon2,0); InvalidateRect(GetParent(HKButtons[i]),@R,true); Break; end; end; end; Da ich diese Art von Proceduren auch noch für MouseEnter und MouseLeave habe ist meine CPU-Auslastung, wenn ich schnell über die Komponenten gehe, nicht unter 25%! (bei 2,56 GH) Nun zu meiner Frage, kann man das Berechnen irgendwie vereinfachen? In der PSDK hab ich leider nichts gefunden! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 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