在Doc/View框架下,窗口的重绘主要由以下几个函数来完成

CDocument::UpdateAllViews

CView::OnUpdate

CWnd::Invalidate 或CWnd::InvalidateRect

CView::OnDraw

当doc管理的资料发生变化时,在doc中调用UpdateAllViews,来通知view更新其显示内容,view并不是直接调用OnDraw,而是OnUpdate被调用,用可以重新设定需要重绘的区域即无效区,在OnUpdate中调用Invalidate或InvalidateRect 都会引起OnDraw的调用,view才能最终得到重绘。

/通知view重绘

void CMyDoc::OnTest()
{
   UpdateAllViews(NULL);
}

///设置重绘区

void CMyView::OnUpdate(CView* /*pSender*/, LPARAM /*lHint*/, CObject* /*pHint*/)
{
   重绘区代码
 MessageBox(_T("on update"));
  Invalidate();///WM_PAINT 消息的发出和它有关
}

void CMyView::OnDraw(CDC* pDC)
{
 CSMDTestDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 if (!pDoc)
  return;

pDC->GetClipBox(&rect); //获取重绘的区域
    MessageBox(_T("on draw "));
}

Document/View 模式下的窗口重绘相关推荐

  1. WPF随笔(十四)--如何在MVVM模式下关闭窗口

    离上一篇WPF随笔有多久,再度编码WPF项目就有多久.机缘巧合又接下了一个开发WPF桌面程序的任务,又有机会详细研究之前一直忽略的细节. 今天就来谈谈如何在MVVM模式下关闭窗口. 什么?关闭窗口还要 ...

  2. UCGUI编程三:背景窗口重绘

    官方例程如下: #include "GUI.h" #include "WM.H" #include "FRAMEWIN.H"static v ...

  3. 28、深入浅出MFC学习笔记,View功能的加强和重绘效率的提高

    1.同一份Document的多个views,在Document的一个view改变了后,如何同步其它view呢? 让所有的Views 同步更新资料的关键在于两个函数: 1)CDocument::Upda ...

  4. MFC-4简单的窗口重绘(非部分重绘)

    #include <afxwin.h> #include "resource.h" #include <afxtempl.h> //定义模板类的头文件cla ...

  5. PyQt窗口FramelessWindowHint模式下自定义窗口缩放与移动功能(by 浅若清风cyf)

    背景 众所周知,PyQt的窗口支持隐藏系统默认的窗口,实现自定义窗口的样式. 但是,启用这种模式的窗口随之而来的问题是:无法使用系统默认的窗口缩放,窗口移动等功能.因此,今天博主带来自己编写的一个自定 ...

  6. android view强制重绘_android view 相关方法 layout draw 布局 重绘 | 学步园

    http://blog.csdn.net/az44yao/article/details/8208087 ViewGroup用onLayout实现view的自由移动 http://qq18715568 ...

  7. 基础语法篇_4——插入符【文本插入符|图形插入符】、窗口重绘、路径、字符输入【设置字体|字幕变色】

  8. vc++图像保存,重绘

    新建mfc应用程序,单文档 增加绘图 分别增加命令响应 添加成员变量UINIT 图形可以运行,如何保存呢?(一个集合类,CPtArt) 用一个类的对象来保存一个图形的三个要素 所以插入一个新的类(通常 ...

  9. android 重绘如何能不闪一下屏幕_浏览器渲染机制——重绘重排

    性能优化中,减少重绘重排应该是一种很好的优化方式,我们具体看一下什么情况下会造成重绘重排,为什么减少重绘重排可以做到优化,怎么样减少重绘重排. 浏览器渲染过程 我们先看看当浏览器拿到服务端返回的资源时 ...

  10. 双缓冲法解决重绘和闪屏问题

    重绘导致原因:UpdateData.Invalidate.InvalidateRect和UpdateWindow函数. 1. UpdateData重绘控件函数 UpdateData(TRUE)--刷新 ...

最新文章

  1. 设置 webstorm 对 .vue 高亮
  2. 最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)
  3. static 用法www
  4. centos 下载 哪个版本_生信分析平台搭建(十六):CentOS
  5. 【文件处理】——Python pandas 写入数据到excel中
  6. java.sql.connection 长时间不使用_车子长时间停放不使用,要做到这几点!不然报废是小,安全是大...
  7. 影响 Chrome、Edge 等浏览器的 V8 引擎0day
  8. MCMC: Metropolis-Hastings, Gibbs and slice sampling
  9. Phoenix=HBase+SQL,让HBase插上了翅膀
  10. xml简单理解,xml增删改操作,仅作笔记,不作为学习借鉴
  11. python计算iv值_大数据技术 python计算IV值及使用
  12. Android静态库和动态库的区别
  13. 网络收包LRO GRO测试总结
  14. HTML中长度和颜色的单位分别有哪些?
  15. 352439-37-3,Amino-PEG8-alcohol,氨基-八聚乙二醇由氨基(NH2)和羟基(OH)组成
  16. 原谅帽大作战游戏程序
  17. OpenCV4.x图像处理实例-工地安全帽反光衣穿戴检测
  18. 我如何使用iPad作为学习工具
  19. RuntimeError: PytorchStreamReader failed locating file data.pkl: file not found
  20. 幼儿园计算机技能大赛,幼儿园基本功技能大赛

热门文章

  1. Entity Framework 学习初级篇7--基本操作:增加、更新、删除、事务(转)
  2. HCIE-Security Day19:防火墙用户认证(一)
  3. HCIE-RS面试--RSTP为什么优于STP
  4. ELK详解(十)——Logstash收集Tomcat日志实战
  5. Ansible详解(五)——Ansible其他模块使用详解
  6. 华三 h3c Smart linkMonitor link配置
  7. docker之基础命令相关操作下
  8. leetcode 1.两数之和 (two sum)
  9. 初学JAVA,开发环境的搭建(JDK和Eclipse的安装)
  10. Spring 相关jar包下载及其地址(官方下载地址 )