以一个函数,用以完成图形重画的功能,该函数如下:void CDrawView::OnGraphRedraw()
{
CDrawDoc* pDoc = GetDocument(); //得到文档的指针
Invalidate();
pDoc->UpdateAllViews(this);
} 请问为何同时调用,调用的先后顺序有何差别。
{
CDrawDoc* pDoc = GetDocument(); //得到文档的指针
Invalidate();
pDoc->UpdateAllViews(this);
} 请问为何同时调用,调用的先后顺序有何差别。
1。每个视图必须在doc更新时更新自己,而Doc通过UpdateAllViews通知各个视图
2. 如果视图需要绘制界面,必须Invalidate或者InvalidateRect
因此在OnUPdate中,Invalidate/InvalidateRect是对于需要绘制的视图是必须的。但是在上述函数中,实际是不必须的。如果楼上代码改成pDoc->UpdateAllViews(NULL);则应该可以把Invalidate删除