VC++ 关于窗口刷新的几个函数InvalidateRect、UpdateWindow、RedrawWindow
在前面写了那么多自绘控件,有必要对这几个接口做下声明解释:
这几个接口都是对执行窗体重绘的消息,那么什么时候才会发生重绘窗口的消息?答案是:当窗体需要更新内容或是重绘外观背景的时候,应用程序通常会发送一条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相关推荐
- 窗口刷新 Invalidate UpdateWindow RedrawWindow
窗口刷新的几个函数:InvalidateUpdateWindowRedrawWindow 一:什么时候才会发生重绘窗口的消息? 当需要更新或重新绘制窗口的外观时,应用程序就会发送WM_P ...
- VC窗口刷新InvalidateRect和…
学习了 原文地址:VC窗口刷新InvalidateRect和UpdateWindow 作者:玩世不恭 首先说说WM_PAINT这个重要的消息: The WM_PAINT message is gene ...
- 【转】VC窗口刷新InvalidateRect和UpdateWindow RedrawWindow
首先说说WM_PAINT 这个重要的消息: The WM_PAINT message is generated by the system and should not be sent by an a ...
- Windows窗口刷新机制详解
1.Windows的窗口刷新管理 窗口句柄(HWND)都是由操作系统内核管理的,系统内部有一个z-order序列,记录着当前窗口从屏幕底部(假象的从屏幕到眼睛的方向),到屏幕最高层的一个窗口句柄的排序 ...
- layui table reload post请求_如何实现在Layui框架中完成父窗口刷新(更新)
最近有个项目使用Layui框架进行后端系统的界面搭建,其中Layui框架中的Layer组件在项目中会用得非常多.且有些功能会遇到子窗口完成数据的提交后,进行关闭同时会刷新父窗口的数据,所以此文章分享一 ...
- VC启动窗口画面制作方法研究
VC启动窗口画面制作方法研究 源代码运行效果图如下: 1. 概述 前几天在设计软件时,选择VC作为开发工具,想做个启动画面,由于以前没有制作过,所以到网上搜了一通.网上有几篇相关文章,有两篇我觉得很有 ...
- EGE绘图之二 窗口刷新
EGE专栏:EGE专栏 上一篇:EGE绘图之一 绘图讲解 下一篇:EGE绘图之三 动画 EGE绘图之二 窗口刷新 目录 一.EGE的窗口刷新 1. EGE窗口刷新流程 2. 渲染模式 2.1 自动渲染 ...
- VC++中GlobalAlloc()、malloc()和new()函数之间区别
VC++中GlobalAlloc().malloc()和new()函数都可以用来实现内存的动态分配,那么它们之间有什么区别呢? 三者的区别主要有以下几点: 1.GlobalAlloc()函数在程序的堆 ...
- 关闭子窗口刷新父窗口
以下这段代码是为了弹出一个窗口,window.showModalDialog这个是弹出窗体的地方,当执行到的时候它后面的代码就不执行了,当把弹出的窗体关闭将会执行后面的location.reload( ...
最新文章
- 配置交换机端口聚合(思科)
- Objective-C设计模式——生成器Builder(对象创建)
- alert文件位置 oracle,Oracle11gAlertlog文件位置的问题
- C#使用linq查询大数据集的方法
- 第一百二十九期:阿里内部员工,排查Java问题常用的工具单
- 7安装sql cent os server_Cent OS 7 编译安装 My SQL 5.7
- red hat linux怎么运行,Red Hat Linux中自动运行程序
- android markdown编辑器,安卓版好用的Markdown编辑器
- 毕设项目 - 基于SSM的企业公寓宿舍后勤管理系统(含源码+论文)
- OpenGL编程指南第九版第一个示例配置
- 使用FIT2CLOUD在青云QingCloud快速部署和管理Kubernetes集群 1
- (3/3) 在 Cocos creator 中使用 steam api , steam 成就
- 项目中出现npm WARN locking errno: -4048, npm WARN locking code: ‘EPERM‘, npm WARN locking syscall:
- cocos creator麻将教程系列(九)—— 幼麟棋牌代码讲解
- 送外卖优先级_如何在恶劣天气让外卖小哥优先送您的订单?
- 简单的Dos命令/一行代码实现恶意程序
- 433芯片的基本原理和对应优缺点理解
- 从零开始 教你如何搭建Discuz!4.1论坛(图)
- T(n) = 25T(n/5)+n^2的时间复杂度(转)
- 安徽科技学院 信网学院网络文化节 李彤彤