![]() |
Cursor im fremden Client zentrieren
Hallo nochmal, einen hab ich doch noch ;)
Die Funktion GetClientRect liefert ja für die obere linke Ecke eines Fenster-Clients (0|0). Kann ich diese Koordinaten irgendwie umrechnen auf absolute Koordinaten? Ich muss irgendwie den Border vom Fenster miteinbeziehen, wenn ich den Cursor exakt in die Clientmitte setzen will... Das Fenster ist nicht von mir. Bisher arbeite ich mit dem gesamten Fenster (mit Border), was allerdings bei der Y-Koordinate zu Fehlern führt... Na ja, vielleicht kann mir ja jemand helfen ;) LDer. |
Re: Cursor im fremden Client zentrieren
GetWindowRect gibt Dir doch die Screen-Koordinaten zurück. Somit solltest Du beide Rechtecke miteinander verrechnen können. Ggf. müsstest Du die fehlenden Faktoren (Höhe der Titelleiste, Rahmenbreite etc.) noch mit GetSystemMetrics oder SystemParametersInfo holen.
|
Re: Cursor im fremden Client zentrieren
Hab mir jetz selbst was gebaut:
Delphi-Quellcode:
Trotzdem Danke! Dachte halt, es ginge einfacher...
type
TWindowStruct=record Left, Top, Width, Height:integer; end; function GetClientRectAbs(InHandle:HWND):TWindowStruct; var cliRect, wndRect:TRect; bWidth, bHeight:integer; begin if(InHandle<>0)then begin GetWindowRect(InHandle, wndRect); Windows.GetClientRect(InHandle, cliRect); if(wndRect.Top+cliRect.Bottom<>wndRect.Bottom)then begin bWidth:=(wndRect.Right-wndRect.Left-cliRect.Right)div 2; bHeight:=wndRect.Bottom-wndRect.Top-cliRect.Bottom-bWidth; end else begin bWidth:=0; bHeight:=0; end; Result.Left:=wndRect.Left+bWidth+1; //Lieber ein-zwei Pixel verlieren, als das Zielfenster verlassen! Result.Top:=wndRect.Top+bHeight+1; Result.Width:=cliRect.Right-2; Result.Height:=cliRect.Bottom-2; end else begin Result.Left:=0; Result.Top:=0; Result.Width:=0; Result.Height:=0; end; end; Der LDer. |
Re: Cursor im fremden Client zentrieren
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 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