MFC多视图与重绘效率
- 多窗口同步更新
- CDocument::UpdateAllViews(CView* pSender,LPARAM lHint,CObject* pHint):通知所有与CDocument同源的CView窗口,即发送WM_PAINT。
- View::OnUpdate(CView* pSender,LPARAM lHint,CObject* pHint)局部重绘或全部重绘,通过Hint设置重绘区域,即计算出重绘局部,然后通过InvalidateRect()通知OnDraw()重绘;
- OnDraw():所有重绘操作都集中在在这里。
-
具体实现
1).定义一个hint数据类型,用于描述重绘数据局部
2).在View中改变Documen内容时,产生一个hint对象,
3).调用UpdateAllViews,传入参数hint;
4).改写OnUpdate,利用hint重绘局部,提高重绘效率
5).hint根据实际情况可以以不同形状,在hint内部的区域都要 重绘。 -
如何计算一个矩形的交集:IntersectRect()