Search code examples
visual-c++gdionpaint

CPaintDC in CStatic not cutting of drawing


My OnPaint() method in a derived CStatic-control is supposed to be cutting of parts of the drawing which are bigger than the control, as far as I know. However it doesn't do this.

void CGraph::OnPaint ()
{
   CPaintDC dc(this);
   dc.SetViewportOrg (0, 400);
   dc.SetMapMode(MM_ISOTROPIC);
   dc.SetWindowExt(1000, 800);
   dc.SetViewportExt(1000, -800);

   // MessageBox(L"OnPaint");
   ProcessData ();
   DrawCoordinateSystem (&dc);
   DrawGrid (&dc);
   DrawGraph (&dc);
}

Solution

  • @JohnCz Got it now.

    CDC* pDC = GetDC();
    CRect rClient();
    GetClientRect(rClient);
    CRgn ClipRgn;
    if (ClipRgn.CreateRectRgnIndirect(&rClient))
    {
        pDC->SelectClipRgn(&ClipRgn);
    }
    
    
    // Drawing content
    
    
    pDC->SelectClipRgn(NULL);
    ReleaseDC(pDC);
    

    Thanks for your answer