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);
}按理说执行了绘图函数图形应该马上显示出来,并不需要在这个时候重绘啊?
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);
}按理说执行了绘图函数图形应该马上显示出来,并不需要在这个时候重绘啊?
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);