AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Mausbewegung feststellen über transparenten Fenster
Thema durchsuchen
Ansicht
Themen-Optionen

Mausbewegung feststellen über transparenten Fenster

Ein Thema von Onkelrossie · begonnen am 10. Dez 2008 · letzter Beitrag vom 10. Dez 2008
Antwort Antwort
Onkelrossie

Registriert seit: 7. Aug 2006
43 Beiträge
 
Delphi 7 Architect
 
#1

Mausbewegung feststellen über transparenten Fenster

  Alt 10. Dez 2008, 04:58
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
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Mausbewegung feststellen über transparenten Fenster

  Alt 10. Dez 2008, 05:28
Hier im Forum suchenCursorposition
Blackheart
  Mit Zitat antworten Zitat
Onkelrossie

Registriert seit: 7. Aug 2006
43 Beiträge
 
Delphi 7 Architect
 
#3

Re: Mausbewegung feststellen über transparenten Fenster

  Alt 10. Dez 2008, 05:55
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Mausbewegung feststellen über transparenten Fenster

  Alt 10. Dez 2008, 07:41
Frag doch im MouseMove ab, welche Farbe das Pixel an der aktuellen Mausposition hat (Canvas.Pixels oder Scanline), evtl. mit einer Toleranz.
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 SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Mausbewegung feststellen über transparenten Fenster

  Alt 10. Dez 2008, 07:52
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Onkelrossie

Registriert seit: 7. Aug 2006
43 Beiträge
 
Delphi 7 Architect
 
#6

Re: Mausbewegung feststellen über transparenten Fenster

  Alt 10. Dez 2008, 07:58
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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: Mausbewegung feststellen über transparenten Fenster

  Alt 10. Dez 2008, 09:23
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Onkelrossie

Registriert seit: 7. Aug 2006
43 Beiträge
 
Delphi 7 Architect
 
#8

Re: Mausbewegung feststellen über transparenten Fenster

  Alt 10. Dez 2008, 17:54
Ok,
danke für de Tipp mit den Maus-Hooks.
Habe es nun damit hinbekommen.


Mit freundlichen Grüßen
Onkelrossie
  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 02:57 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