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.


Anmelden zum Antworten