Win7 + VS2008的环境,学习孙鑫的《深入浅出VC++》过程中,新建的MFC工程,按书中的说法编写了OnLButtonDown和OnLButtonUp响应函数代码,发现在鼠标弹起时所绘图形并没有即时的显示出来,非要等一会或者发生重绘消息的时候才会显示出来,如果想用OnMouseMove显示绘图的过程,根本就看不到,大家看看这是什么原因?是不是VS2008下MFC有什么新的机制啊?
void CTestView::OnLButtonUp(UINT nFlags, CPoint point) 
{
    // TODO: Add your message handler code here and/or call default
    CClientDC dc(this);
//    m_ptBegin=0;
    CBrush *brush=CBrush::FromHandle((HBRUSH)::GetStockObject(NULL_BRUSH));
    CBrush *OldBrush=dc.SelectObject(brush);
    dc.Rectangle(CRect(m_ptBegin,point));
    dc.SelectObject(OldBrush);    CView::OnLButtonUp(nFlags, point);
}void CTestView::OnLButtonDown(UINT nFlags, CPoint point) 
{
    // TODO: Add your message handler code here and/or call default
    m_ptBegin=point;
    CView::OnLButtonDown(nFlags, point);
}按理说执行了绘图函数图形应该马上显示出来,并不需要在这个时候重绘啊?

解决方案 »

  1.   

    没看过孙鑫的书,不知道里面怎么说的。但是不管怎样都尽量不要这么画。在OnLButtonDown()里面
    m_ptBegin=point;在OnLButtonUp()里面
    m_ptEnd=point;
    Invalidate(FALSE);在OnDraw()里面,检查m_ptBegin,m_ptEnd是不是合法,如果是,就
    CBrush *OldBrush=dc.SelectObject(brush);
    dc.Rectangle(CRect(m_ptBegin,m_ptEnd));
    dc.SelectObject(OldBrush);
      

  2.   

    OnDraw()里面是 pDC->,上面的dc.不对。