AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Cursor im fremden Client zentrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Cursor im fremden Client zentrieren

Ein Thema von LDericher · begonnen am 7. Mai 2009 · letzter Beitrag vom 7. Okt 2009
Antwort Antwort
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#1

Cursor im fremden Client zentrieren

  Alt 7. Mai 2009, 10:03
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Cursor im fremden Client zentrieren

  Alt 7. Mai 2009, 10:50
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Cursor im fremden Client zentrieren

  Alt 7. Mai 2009, 11:03
Hab mir jetz selbst was gebaut:

Delphi-Quellcode:
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;
Trotzdem Danke! Dachte halt, es ginge einfacher...

Der LDer.
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#4

Re: Cursor im fremden Client zentrieren

  Alt 7. Okt 2009, 11:01
Guckst Du hier:
http://www.delphipraxis.net/internal...=908998#908998
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz