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中