2016-05-04 2 views
-3

Single Document, die einfachste MFC-App bearbeitet.MFC C++ Zugriff auf CDC pDC in OnDraw() von WM_KEYDOWN Handler

Die Idee ist, dass Standard CDC PDC in gewisser Weise von onDraw() Funktion bearbeitet (gefärbt) wird. Wenn ein Benutzer auf eine Nummer klickt, die angezeigt werden soll, werden Farben aus pDC verwendet.

Wenn ich die Standard-Handler-Funktion OnKeyDown für WM_KEYPRESS verwende, bekomme ich keinen Zeiger für mein bearbeitetes pDC.

Meine Frage ist, wie man auf das bearbeitete pDC zugreift? Ich bin sicher, dass es eine einfache Lösung, die ich vermisse, bitte helfen.

Antwort

2

Ich bin nicht 100% sicher, dass ich die Frage richtig verstanden hat, aber lassen Sie mich versuchen ....

Der üblicher und empfohlene Weg in MFC zu tun, was ich glaube, Sie würden wollen, dass alle in onDraw() Zeichnung zu handhaben nur.

Also, in den onKeyDown() Handler würden speichern Sie die gedrückte Taste zu einer Membervariable (oder vielleicht sogar zu einem vector oder list von Tasten drücken gezogen werden) und dann Invalidate(false) nennen. Das verursacht, dass Windows eine WM_PAINT Nachricht an Ihr Fenster generiert, die in onDraw() behandelt wird, wo Sie jetzt die richtigen Dinge basierend auf Ihren aktuellen Mitgliedsvariablenwerten zeichnen können.

Es ist auch möglich, einen CPaintDC außerhalb von onDraw() zu erstellen und darauf zuzugreifen. Aber wie gesagt, normalerweise in MFC-Anwendungen, alle Zeichnungen werden an einem Ort aufbewahrt. Windows fordert Ihre App möglicherweise zu einem späteren Zeitpunkt erneut auf, und zwar mit einer Nachricht WM_PAINT.

Verwandte Themen