VS2015MFC中绘制椭圆的问题

VS2015MFC中绘制椭圆的问题

问题描述:

void CGZPPaintView::OnDraw(CDC* pDC)
{
CGZPPaintDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
if(m_draw_type!=NoDraw)
{ pDC->SelectObject(&m_pen);
switch(m_draw_type)
{case PLine:
pDC->SetROP2(R2_NOTXORPEN);
pDC->MoveTo(this->m_start_point);
pDC->LineTo(this->m_pre_end_point);
pDC->MoveTo(this->m_start_point);
pDC->LineTo(this->m_end_point);
this->m_pre_end_point=m_end_point;
break;
case PRectangle:
pDC->SetROP2(R2_NOTXORPEN);
pDC->Rectangle(CRect(m_start_point,m_pre_end_point));
pDC->Rectangle(CRect(m_start_point,m_end_point));
this->m_pre_end_point = m_end_point;
break;
case PEllipse:
pDC->SetROP2(R2_NOTXORPEN);
pDC->Ellipse(CRect(m_start_point,m_pre_end_point));
pDC->Ellipse(CRect(m_start_point,m_end_point));
this->m_pre_end_point = m_end_point;
break;

    }
}

}

void CGZPPaintView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(this->m_draw_type!=NoDraw)
{
switch(m_draw_type)
{
case PLine:
this->m_start_point=point;
this->m_pre_end_point=point;
break;

    case PRectangle:
        this->m_start_point=point;
        this->m_pre_end_point=point;
        break;
    case PEllipse:
        this->m_start_point=point;
        this->m_pre_end_point=point;
        break;
    }
}

CView::OnLButtonDown(nFlags, point);

}

void CGZPPaintView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
if(nFlags==MK_LBUTTON)
{
this->m_end_point=point;
this->Invalidate(FALSE);
}

CView::OnMouseMove(nFlags, point);

}

在VC++6.0 当中能绘制正常的椭圆 。但是在VS2015中
左上角已经没有被擦除

有残影?先FillRectangle清除下客户区