mikrocontroller.net

Forum: PC-Programmierung Position eines Bildes ermitteln


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Olaf Stieleke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ClientToScreen und ScreenToClient sind ab jetzt erstmal deine Freunde...

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.