Forum: PC-Programmierung Position eines Bildes ermitteln


von Thomas (Gast)


Lesenswert?

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

von Olaf Stieleke (Gast)


Lesenswert?

ClientToScreen und ScreenToClient sind ab jetzt erstmal deine Freunde...

von Thomas (Gast)


Lesenswert?

@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

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.