Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mausbewegung feststellen über transparenten Fenster (https://www.delphipraxis.net/125705-mausbewegung-feststellen-ueber-transparenten-fenster.html)

Onkelrossie 10. Dez 2008 04:58


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

Blackheart 10. Dez 2008 05:28

Re: Mausbewegung feststellen über transparenten Fenster
 
Hier im Forum suchenCursorposition

Onkelrossie 10. Dez 2008 05:55

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:
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if (Msg.message = WM_MOUSEMOVE) then
     Simulate(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;
Ich hoffe Ihr habt mein Problem verstanden und könnt mir weiterhelfen.
Am besten mit einem kleine Code-Bsp.

Vielen Dank


Mit freundlichen Grüßen
Onkelrossie

DeddyH 10. Dez 2008 07:41

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.

SirThornberry 10. Dez 2008 07:52

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.

Onkelrossie 10. Dez 2008 07:58

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

Sir Rufo 10. Dez 2008 09:23

Re: Mausbewegung feststellen über transparenten Fenster
 
Zitat:

Zitat von Onkelrossie
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.

Obiwan sagte "Luke, nutze die Macht!"
Wir sagen hier "Nutze die Suche!"

Hier im Forum suchenmaus hook

cu

Oliver

Onkelrossie 10. Dez 2008 17:54

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 07:18 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