Hallo zusammen, ich bin gerade dabei ein PC-Programm in C++ zu schreiben. Ich verwende Visual C++ 2003 und arbeite in mit den MFC Dialogfeldern. Ich möchte in meinen Hauptdialogfenster Werte über eine graphische 9 stellige 7-Segment-Anzeige darstellen. Dazu erzeuge ich mir mit dem "Picture Control" aus der Toolbox ein Feld, dem ich dann eine Bitmap zuweise. Durch anklicken einer der neun Ziffern, soll sich die Bitmap ändern z.B Bild mit linker Maustaste gedrückt -> Wert der Ziffer +1, rechte Maustaste -> Wert der Ziffer -1. Ich denke mal das Prinzip ist klar. Das Austauschen der Bilder ist kein Problem, jedoch das ermitteln der Bildposition. Die Methode OnLButtonDown liefert mir ja die Position der Maus, wo die linke Taste gedrückt worden ist. Doch diese Position muss noch mit den Positionen der Bilder vergleichen werden, um zu erkennen welche Ziffer angeklickt wurde. Wie kann ich die Position eines Bildes in einem Dialogfenster ermitteln? Gibt es da eine Methode die mir das gewünschte liefert? Gruß und Freude Thomas
ClientToScreen und ScreenToClient sind ab jetzt erstmal deine Freunde...
@Olaf Verstehe ich es richtig, das die Methoden eine Konvertierung der Position machen. Z.B die Maus befindet sich an Position (30,55) und zwar von der linken oberen Ecke des Fensters aus gesehen. Dann konvertiert mir die Methode ClientToScreen diesen Punkt in die Position, die von der linken oberen Ecke des Monitors (Screen) entfernt ist. Thomas
Ganz genau. Und mit der Umkehrung davon, ScreenToClient, angewendet vom Picture Control aus, lässt du dir die Position in Bezug auf das Picture Control ausrechnen. Damit hast du Koordinaten, deren 0-Punkt in der linken oberen Ecke des Picture Controls liegt. Wies jetzt weiter geht, denke ich, weist du schon.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.