![]() |
Mauskoordinaten relativ zum aktuellen Monitor?
Guten Tag! Ich möchte die Maus-Koordinaten relativ zu dem Monitor eruieren, auf dem sich die Maus befindet. Also: X = 0 am jeweiligen linken Bildschirmrand, und Y = 0 am jeweiligen oberen Bildschirmrand.
Beispiel: Wenn der Benutzer 2 Monitore verwendet und der Hauptbildschirm links angeordnet ist:
Delphi-Quellcode:
Aber vielleicht hat jemand schon das Rad erfunden?
var
pt: Winapi.Windows.TPoint; CurrentMonitor: Vcl.Forms.TMonitor; MouseXOnCurrentMonitor: Integer; Winapi.Windows.GetCursorPos(pt); CurrentMonitor := Vcl.Forms.Screen.MonitorFromPoint(pt); if CurrentMonitor.MonitorNum = 0 then MouseXOnCurrentMonitor := pt.X else MouseXOnCurrentMonitor := pt.X - Screen.Width; |
AW: Mauskoordinaten relativ zum aktuellen Monitor?
Alle Controls/WinControls haben eine Methode ScreenToClient und ClientToScreen.
Warum MonitorNum=0 ? Was passiert, wenn du mal 3 Monitore hast? Der gefundene Monitor gibt dir sein Rect und damit solltest du besser direkt rechnen. TPoint und TRect haben ein .Offset oder das alte einsame OffsetRect. PS: FindVCLWindow (falls man nicht eigentlich den Monitor sondern das darauf wissen wollte) Und auch Forms haben ein Monitor-Property, der das zugehörige Rect gibt. |
AW: Mauskoordinaten relativ zum aktuellen Monitor?
Du meinst also?:
MouseXOnCurrentMonitor := pt.X - CurrentMonitor.BoundsRect.Left; MouseYOnCurrentMonitor := pt.Y - CurrentMonitor.BoundsRect.Top; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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