Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: WinAPI ::  Mausposition relativ zu bestimmtem Objekt     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
MinnieMouse
Unregistrierter




Beitrag MinnieMouse Unregistrierter 18:13:38 11.02.2018   Titel:   Mausposition relativ zu bestimmtem Objekt            Zitieren

Hi,

stellt euch vor ich habe ein Image in einem Formular. Nun möchte ich wissen, an welchen Koordinaten des Images meine Maus sich befindet.

Mit GetCursorPos krieg ich ja die ScreenKoordinaten und könnte sie mit ScreenToClient auf das Formular konvertieren.
Wie sieht das jetzt aber aus, wenn ich die relativen Koordinaten des Images haben möchte, auf die die Maus zeigt?

Ich dachte am einfachsten wäre hier ein MouseMove Event, da dort X und Y ja direkt mit dabei sind. Wenn ich jetzt aber per Scrollrad das Image in der Größe veränder' (und die Position verschiebe) und die Maus an der gleichen Stelle lasse, wird ja kein MouseMove Event erzeugt, die Koordinaten haben sich durch die Vergrößerung aber geändert.
Probiert habe ich schon selber ein MouseMove Event auszulösen über
C++:
mouse_event(MOUSEEVENTF_MOVE,0,0,0,0);


aber es wird nur ausgeführt, wenn ich dx oder dy um mindestens 1 "bewege". Ist ja jetzt aber blöd jedesmal die Maus ein Stückchen zu bewegen, nur um an die Koordinaten aus MouseMove zu kommen :rolleyes:

Und außerdem, wenn jetzt noch ein anderes Objekt über dem Image liegt, wird das MouseMove Ereignis vom Image ja eh nicht aufgerufen.

Gibt es noch andere Möglichkeiten an die entsprechende Mausposition zu kommen? Bin grad etwas verwirrt :confused:
Martin Richter
Moderator

Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 15387
Beitrag Martin Richter Moderator 08:35:17 12.02.2018   Titel:              Zitieren

ScreenToClient / ClientToScreen...

Wenn sich Dein Control verändert musst Du selber dafür sorgen, das sich alles entsprechend anpasst. Woher soll Windows wissen wann was zu passieren hat?

Am einfachsten wäre es nach dem Resize des Controls ein WM_SETCURSOR an sich selbst zu senden, sofern der Cursor im Fenster liegt...

Das mit dem mouse_event lass mal bleiben. Das würde das Event physikalisch an der Position auslösen auch wenn Dein Fenster teilweise verdeckt wäre. In dem Fall würde der Event wo anders landen.

_________________
Martin Richter (MVP für C++ von 2000 bis 2015) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
MinnieMouse
Unregistrierter




Beitrag MinnieMouse Unregistrierter 00:28:48 13.02.2018   Titel:              Zitieren

Vielen Dank für den Hinweis! Funktioniert wunderbar, hatte da irgendwie nen Knoten im Hirn ...

Ja mit dem mouse_event hast Du auch Recht, ich habs gemerkt..viel zu unkonrollierbar :(
Wade1234
Unregistrierter




Beitrag Wade1234 Unregistrierter 14:11:04 14.02.2018   Titel:              Zitieren

WM_MOUSEMOVE liefert die koordinaten auch.
C++ Forum :: WinAPI ::  Mausposition relativ zu bestimmtem Objekt   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.