在前面写了那么多自绘控件,有必要对这几个接口做下声明解释:

这几个接口都是对执行窗体重绘的消息,那么什么时候才会发生重绘窗口的消息?答案是:当窗体需要更新内容或是重绘外观背景的时候,应用程序通常会发送一条WM_PAINT消息,通知窗体进行重新绘制。

InvalidateRect(m_hWnd, lpRect, bErase):

强制系统进行重绘,但是不一定马上会进行重绘,仅仅是通过Post方式将WM_PAINT消息放入到窗体消息队列,当执行到WM_PAINT消息时候才会执行重绘。重绘区域通过lpRect指定,如果为NULL,则重绘整个客户区。

UpdateWindow(m_hWnd)

绕过消息队列直接向窗体发送WM_PAINT消息并且立即执行,发送之前会通过GetUpdateRect(hWnd, NULL, TRUE)看看是否有需要绘制的客户区域,如果没有,就不发送WM_PAINT消息了。

RedrawWindow(HWND hWnd, LPCRECT lpRectUpdate, CRgn* prgnUpdate,  UINT flags):

具有InvalidateRect和UpdateWindow的双特性。声明窗口状态为无效,并立即更新窗口,立即调用WM_PAINT消息。

通常我们会看到这样的组合:

InvalidateRect(m_hWnd, lpRect, bErase);

UpdateWindow(m_hWnd);

目的是让窗体立即刷新无效区域。

VC++ 关于窗口刷新的几个函数InvalidateRect、UpdateWindow、RedrawWindow相关推荐

  1. 窗口刷新 Invalidate UpdateWindow RedrawWindow

    窗口刷新的几个函数:InvalidateUpdateWindowRedrawWindow 一:什么时候才会发生重绘窗口的消息?        当需要更新或重新绘制窗口的外观时,应用程序就会发送WM_P ...

  2. VC窗口刷新InvalidateRect和…

    学习了 原文地址:VC窗口刷新InvalidateRect和UpdateWindow 作者:玩世不恭 首先说说WM_PAINT这个重要的消息: The WM_PAINT message is gene ...

  3. 【转】VC窗口刷新InvalidateRect和UpdateWindow RedrawWindow

    首先说说WM_PAINT 这个重要的消息: The WM_PAINT message is generated by the system and should not be sent by an a ...

  4. Windows窗口刷新机制详解

    1.Windows的窗口刷新管理 窗口句柄(HWND)都是由操作系统内核管理的,系统内部有一个z-order序列,记录着当前窗口从屏幕底部(假象的从屏幕到眼睛的方向),到屏幕最高层的一个窗口句柄的排序 ...

  5. layui table reload post请求_如何实现在Layui框架中完成父窗口刷新(更新)

    最近有个项目使用Layui框架进行后端系统的界面搭建,其中Layui框架中的Layer组件在项目中会用得非常多.且有些功能会遇到子窗口完成数据的提交后,进行关闭同时会刷新父窗口的数据,所以此文章分享一 ...

  6. VC启动窗口画面制作方法研究

    VC启动窗口画面制作方法研究 源代码运行效果图如下: 1. 概述 前几天在设计软件时,选择VC作为开发工具,想做个启动画面,由于以前没有制作过,所以到网上搜了一通.网上有几篇相关文章,有两篇我觉得很有 ...

  7. EGE绘图之二 窗口刷新

    EGE专栏:EGE专栏 上一篇:EGE绘图之一 绘图讲解 下一篇:EGE绘图之三 动画 EGE绘图之二 窗口刷新 目录 一.EGE的窗口刷新 1. EGE窗口刷新流程 2. 渲染模式 2.1 自动渲染 ...

  8. VC++中GlobalAlloc()、malloc()和new()函数之间区别

    VC++中GlobalAlloc().malloc()和new()函数都可以用来实现内存的动态分配,那么它们之间有什么区别呢? 三者的区别主要有以下几点: 1.GlobalAlloc()函数在程序的堆 ...

  9. 关闭子窗口刷新父窗口

    以下这段代码是为了弹出一个窗口,window.showModalDialog这个是弹出窗体的地方,当执行到的时候它后面的代码就不执行了,当把弹出的窗体关闭将会执行后面的location.reload( ...

最新文章

  1. 配置交换机端口聚合(思科)
  2. Objective-C设计模式——生成器Builder(对象创建)
  3. alert文件位置 oracle,Oracle11gAlertlog文件位置的问题
  4. C#使用linq查询大数据集的方法
  5. 第一百二十九期:阿里内部员工,排查Java问题常用的工具单
  6. 7安装sql cent os server_Cent OS 7 编译安装 My SQL 5.7
  7. red hat linux怎么运行,Red Hat Linux中自动运行程序
  8. android markdown编辑器,安卓版好用的Markdown编辑器
  9. 毕设项目 - 基于SSM的企业公寓宿舍后勤管理系统(含源码+论文)
  10. OpenGL编程指南第九版第一个示例配置
  11. 使用FIT2CLOUD在青云QingCloud快速部署和管理Kubernetes集群 1
  12. (3/3) 在 Cocos creator 中使用 steam api , steam 成就
  13. 项目中出现npm WARN locking errno: -4048, npm WARN locking code: ‘EPERM‘, npm WARN locking syscall:
  14. cocos creator麻将教程系列(九)—— 幼麟棋牌代码讲解
  15. 送外卖优先级_如何在恶劣天气让外卖小哥优先送您的订单?
  16. 简单的Dos命令/一行代码实现恶意程序
  17. 433芯片的基本原理和对应优缺点理解
  18. 从零开始 教你如何搭建Discuz!4.1论坛(图)
  19. T(n) = 25T(n/5)+n^2的时间复杂度(转)
  20. 安徽科技学院 信网学院网络文化节 李彤彤

热门文章

  1. 熟人之间的匿名社交还有什么玩法?“偷偷”加入@提醒和阅后即焚私信功能,让定向信息流动更顺畅
  2. Matlab 命令大全
  3. 客户端负载均衡与服务端负载均衡对比
  4. php 原子缓存,Swoft Cache :协程版切面缓存组件,让你的程序健步如飞
  5. html5手机浏览器后退刷新页面,浏览器收到什么样的response就会刷新页面?
  6. 无人机 大疆M100 yolo+kcf
  7. H265码流RTP封装方式详解
  8. Kali渗透-DDOS拒绝服务攻击
  9. 友情提示:破坏计算机信息系统罪
  10. 本年利润为负数的结转