![]() |
Mausbewegung feststellen über transparenten Fenster
Guten Morgen,
ich habe mal wieder ein Problem welches sicher einfach zu Lösen ist, ich aber einfach nicht darauf kommen will. Ich habe ein Formular dessen Hintergrund-Farbe und Transparent-Farbe ich auf clFuchsia gesetzt habe. Wie kann ich nun die Mausposition immer dann wenn sich die Maus über den transparenten Ausschnitt bewegt ermitteln? Die Mausposition sollte auch gleich die Position innerhalb des Formulars wiedergeben wobei die linke obere Ecke des Fensters die Coordinaten 0;0 und die rechte untere Ecke die Cooardinaten Fensterbreite;Fensterhöhe hatt (z.B. 200x200). Nochmal kurz und bündig: Wenn die Maus sich innerhalb des transparenten Fensters bewegt dann sollen jene Fenstercoordinaten ausgegeben werden. Vielen Dank schonmal im Voraus für Eure Hilfe und einen schönen Tag noch. Mit freundlichen Grüßen Onkelrossie |
Re: Mausbewegung feststellen über transparenten Fenster
|
Re: Mausbewegung feststellen über transparenten Fenster
Hallo Blackheart,
danke erstmal für deine Antwort. Die Mauscoordinaten auf einem normalen Formular auszulesen ist kein Problem für mich. Auch Mouse.CursorPos zum Globalen auslesen der Mauscoordinaten ist mir bekannt. Mein Problem bezieht sich aber auf das Auslesen der Coordinaten sobald ich über bzw. innerhalb des transparenten Formulars bin. Wenn es nicht transparent wäre würde ich das ganze über das OnMouseOver bzw. OnMouseMove Event abfragen. Aber wie mache ich das Ganze bei einem transparenten Formular am besten auch ohne einen Timer zu benutzen der aller paar Millisekunden abfragt da das nur unnötig Ressourcen verbrauchen würde. Ich habe eben nochetwas dazu gefunden aber das Funktioniert auch nicht über dem transparenten Formular.
Delphi-Quellcode:
Ich hoffe Ihr habt mein Problem verstanden und könnt mir weiterhelfen.
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean); begin if (Msg.message = WM_MOUSEMOVE) then Simulate(Mouse.CursorPos.X, Mouse.CursorPos.Y); end; Am besten mit einem kleine Code-Bsp. Vielen Dank Mit freundlichen Grüßen Onkelrossie |
Re: Mausbewegung feststellen über transparenten Fenster
Frag doch im MouseMove ab, welche Farbe das Pixel an der aktuellen Mausposition hat (Canvas.Pixels oder Scanline), evtl. mit einer Toleranz.
|
Re: Mausbewegung feststellen über transparenten Fenster
MouseMove und entsprechende Nachrichten werden nur an das Fenster gesendet wenn die Maus an das Fenster gebunden ist - entweder dadurch das sie sich darüber befindet etc. Wenn du da ein Loch drin hast ist die Maus nicht über deinem Fenster und somit ist das verhalten so als ob sie irgendwo außerhalb wäre.
Wenn dir ein Timer zu performanceintensiv ist wären hooks vielleicht das richtige. |
Re: Mausbewegung feststellen über transparenten Fenster
Hallo,
DeddyH, wie schon SirThornberry richtig erwähnte, funktioniert das MouseMove Ereigniss nicht bei transparenten Fenstern. SirThornberry, könntest du mir ein Beispiel geben wie ich das mit Hooks machen könnte? Notfalls würde ich mich auch erstmal mit einem Timer zufrieden geben aber selbst stellt sich mir die Frage wie ich das am besten machen soll. Mit freundlichen Grüßen Onkelrossie |
Re: Mausbewegung feststellen über transparenten Fenster
Zitat:
Wir sagen hier "Nutze die Suche!" ![]() cu Oliver |
Re: Mausbewegung feststellen über transparenten Fenster
Ok,
danke für de Tipp mit den Maus-Hooks. Habe es nun damit hinbekommen. Mit freundlichen Grüßen Onkelrossie |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:50 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