Zeichnen funktioniert nicht
-
Ich habe in meiner Dialog-Anwendung ein Picture-Control eingebaut. Nun möchte ich darin zeichen, es funktioniert aber nicht. Fehler kommen keine, Striche aber auch nicht, geschweige denn, dass die Fläche schwarz gefüllt würde.
bool CGraphics::DrawChart(CDatenstruktur *DataSet, CWnd *DrawHandle, const int typ) { LPRECT PaintRect = new RECT; CPen penGreen(PS_SOLID, 1, RGB(0,20,0)); CPaintDC dc(DrawHandle); DrawHandle->GetWindowRect(PaintRect); CRgn rgn; rgn.CreateRectRgnIndirect((LPCRECT)&PaintRect); dc.SelectClipRgn(&rgn); dc.FillSolidRect(PaintRect, 0x00000000); dc.SelectObject(&penGreen); dc.MoveTo(200, 300); dc.LineTo(400, 400); }DrawHandle ist vom Typ CWnd* und gefüllt mit GetDlgItem(IDC_GRAPH_AREA_RES_SINGLE). IDC_GRAPH_AREA_RES_SINGLE ist die ID des Picture Control.
Danke für die Hilfe.
zwette
-
Nach stundenlangem Rumprobieren hab ich die Lösung gefunden:
// CPaintDC dc(DrawHandle); CClientDC dc(DrawHandle);Fragt mich aber nicht, warum das so ist.
zwette
-
Fragt mich aber nicht, warum das so ist.
Wenn man mal in die MSDN schauen würden, könnte man folgendes lesen:
The CPaintDC class is a device-context class derived from CDC. It performs a CWnd::BeginPaint at construction time and CWnd::EndPaint at destruction time.
A CPaintDC object can only be used when responding to a WM_PAINT message, usually in your OnPaint message-handler member function.