Koordinaten-Rechnung

19/05/2010 - 09:05 von Lothar Geyer | Report spam
Wenn ich in einer MDI-Anwendung ein Control habe, das z.B. in einer Form
auf einem Frame liegt - wie bekomme ich die "physikalischen" Koordinaten
z.B. des linken. oberen Eckpunktes? Ich brauche sie in den selben
Koordinaten, wie sie GetCursorPos zurückliefert.

Lothar Geyer
 

Lesen sie die antworten

#1 Peter Götz
19/05/2010 - 09:44 | Warnen spam
Hallo Lothar,

Wenn ich in einer MDI-Anwendung ein Control habe, das z.B. in einer Form
auf einem Frame liegt - wie bekomme ich die "physikalischen" Koordinaten
z.B. des linken. oberen Eckpunktes?



Ich weiss nicht, was genau Du mit "physikalischen"
Koordinaten meinst.
Wenn das Control richtig arbeitet, sollte es in
Control.Left und Control.Top die Koordinaten
der linken oberen Ecke bezogen auf den umgebenden
Container zurückgeben. Control.Left = 0 und Control.Top = 0
würde bedeuten, dass das Control in der àussersten
linken, oberen Ecke des umgebenden Contrainers liegt.

Mit Hilfe der Api-Funktion

ClientToScreen()

Private Declare Function ClientToScreen _
Lib "user32.dll" _
(ByVal hwnd As Long, _
ByRef lpPoint As POINTAPI _
) As Long


kannst Du Dir Clientkoordinaten in Bildschirmkoordinaten
umrechnen lassen und mit der Api-Funktion

ScreenToClient()

Private Declare Function ScreenToClient _
Lib "user32.dll" _
(ByVal hwnd As Long, _
ByRef lpPoint As POINTAPI _) As Long


in der umgekehrten Richtung Bildschirmkoordinaten in
Clientkoordinaten umrechnen lassen.

Alle Positionsangaben in Pixel,
Control.Left u. Control.Top also erst von Twips in
Pixel umrechnen.

Ich brauche sie in den selben Koordinaten, wie sie GetCursorPos
zurückliefert.



GetCursorPos liefert die Position bezogen auf den
Bildschirm (Screen).


Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen