Originalstift CPen wiederherstellen
-
Hallo
Ich will ein Gitternetz in grau zeichnen udn danach soll wieder der Originalstift (schwarz) gesetzt werden. Ich mache das derzeit so:
void CMyGeometryView::draw_grid(CDC* pDC) { CPen my_pen(PS_SOLID, 1, RGB(192,192,192)); CPen* org_pen = pDC->SelectObject(&my_pen); for(size_t i=0; i<1024; i += grid_space) { pDC->MoveTo(i, 0); pDC->LineTo(i,768); } for(size_t i=0; i< 768; i += grid_space) { pDC->MoveTo(0, i); pDC->LineTo(1024, i); } pDC->SelectObject(&org_pen); }So wie ich es verstanden habe, gibt SelectObject den zuvor gesetzten Typen zurück. Bei mir bleibt aber leider alles grau.
Diese Funktion rufe ich in OnDraw() auf und danch zeichne ich weiter, aber es bleibt eben alles grau.Vielen Dank für eure Hilfe
chrische
-
Hallo
Hat keiner von euch eine Idee? Ich dachte, dass sei nur ein kleiner Denkfehler von mir.
chrische
-
chrische5 schrieb:
Hat keiner von euch eine Idee? Ich dachte, dass sei nur ein kleiner Denkfehler von mir.
Isses auch.

Schau mal genau diese Zeilen an:CPen* org_pen = pDC->SelectObject(&my_pen);pDC->SelectObject(&org_pen);Was soll das zweite SelectObject denn mit der Adresse des Zeigers auf einen Pen?

-
Hallo
Ich wusste es

andere Frage: solche Zeiger muss ich nicht per Hand deleten, weil ich kein new für sie aufgereufen habe. Ist das so richtig?
chrische
-
So ist es. Zeiger, die Du geliefert bekommst entsorgt das System von selbst. Meist sind es temporäre nur Objekte. Speichenr sollte man diese Zeiger deshalb auch nicht.