我在wm_onlbuttondown、wm_mousemove和wm_lbuttonup消息映射中实现了画一条直线的功能,后来在加入了一个鼠标坐标的实时显示功能,然后运行,发现画一条直线后移动一下鼠标,直线就消失不显示了,应该是鼠标实时显示调用ondraw虚函数的缘故,但不知道怎么解决。。忘各位指点一二。以下为我的代码:
void CMy111View::OnDraw(CDC* pDC)
{
CMy111Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
pDC->TextOut(m_start.x,m_start.y,pDoc->m_StartCoordinate);
    pDC->TextOut(m_end.x,m_end.y,pDoc->m_EndCoordinate);
}void CMy111View::OnLButtonDown(UINT nFlags, CPoint point) 
{
CMy111Doc *pDoc=GetDocument();
ASSERT_VALID(pDoc);
pDoc->m_StartCoordinate.Format("起点坐标:%d,%d",point.x,point.y);
m_start.x=point.x+20;
m_start.y=point.y;
// TODO: Add your message handler code here and/or call default
if(m_bIsDraw)
return;
m_cpStart=point;
m_cpEnd=point;
m_bIsDraw=TRUE;

CView::OnLButtonDown(nFlags, point);
}void CMy111View::OnLButtonUp(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
CMy111Doc *pDoc=GetDocument();
    ASSERT_VALID(pDoc);
    pDoc->m_EndCoordinate.Format("终点坐标:%d,%d",point.x,point.y);
m_end.x=point.x+20;
m_end.y=point.y;
Invalidate();
    if(m_bIsDraw)
m_bIsDraw=FALSE;
CView::OnLButtonUp(nFlags, point);
}void CMy111View::OnMouseMove(UINT nFlags, CPoint point) 
{ // TODO: Add your message handler code here and/or call default
if(!m_bIsDraw)
return;
    CClientDC dc(this);
    dc.SetROP2(R2_NOT);
    dc.MoveTo(m_cpStart);
     dc.LineTo(m_cpEnd);
     dc.MoveTo(m_cpStart);
     dc.LineTo(point);
        m_cpEnd=point;
CView::OnMouseMove(nFlags, point);
}