重绘窗口的消息

windows程序设计之InvalidateRect 和 ValidateRect 函数解析 发生下面几种事件之一时,窗口消息处理程序会接收到一个WM_PAINT消息: 在使用者移动窗口或显示窗口时,窗口中先前被隐藏的区域重新可见。  使用者改变窗口的大小(如果窗口类别样式有着CS_HREDRAW和CS_VREDRAW位旗标的设定)。  程序使用ScrollWindow或ScrollDC函数滚动显示区域的一部分。  程序使用InvalidateRect或InvalidateRg 阅读详情

一:什么时候才会发生重绘窗口的消息?        

    当需要更新或重新绘制窗口的外观时,应用程序就会发送WM_PAINT消息。对窗口进行重新绘制。

二:Invalidate() -- RedrawWindow() -- UpdateWindow()三个函数有什么异同?        

    Invalidate()是强制系统进行重画,但是不一定就马上进行重画。因为Invalidate()只是通知系统,此 时的窗口已经变为无效。强制系统调用WM_PAINT,而这个消息只是Post(寄送)就是将该消息放入消息队列。当执行到WM_PAINT消息时才会对敞口进行重绘。       

     UpdateWindow只向窗体发送WM_PAINT消息,在发送之前判断GetUpdateRect(hWnd,NULL,TRUE)看有无可绘制的客户区域,如果没有,则不发送WM_PAINT。发送即不经过消息队列,直接发送到对应窗口,因此此函数可以立即更新窗口。      

     RedrawWindow()则是具有Invalidate()和UpdateWindow()的双特性。声明窗口的状态为无效,并立即更新窗口,立即调用WM_PAINT消息处理。

跟我一起玩Win32开发(3):窗口的重绘 我们今天来吹一下关于窗口重绘的事情,在开始吹牛之前,我们先用上一篇博文中说到的方法写一个简单的Win32应用程序。代码如下: #include //先声明一下消息处理函数 LRESULT CALLBACK MyWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); // 入口点 int CALLBACK Wi 阅读详情

相关推荐

MFC在阻塞运行的函数中实现动态刷新界面,解决界面假死的问题

在一些密集计算的函数中

m0_60352504的博客 1033

MFC 中Invalidate的使用

Invalidate的使用 在用MFC练习绘图的过程中,碰到了这个语句Invalidate();于是乎度娘了一把,又查找了一些资料,整理如下: 一.Invalidate函数原型: void Invalidate( BOOL bErase = TRUE); 该函数的作用是使整个窗口客户区无效。窗口的客户区无效意味着它需要重绘,例如,如果一个被其它窗口遮住的窗口变成了前台窗口

liulianglin的专栏 1万+

三维点云孔洞修复(附Python代码和公共点云数据集链接)

(1)物体自身缺失(2)物体自身形状复杂,很多凹凸面不够规则甚至存在空腔,空腔内部无法被三维激光扫描仪扫描到(3)物体部分区域对激光扫描不敏感,未被扫描上(4)扫描仪的扫描稳定性。

yanghl1215的博客 6950

对InvalidateRect函数和ValidateRect函数的认识

之前就经常碰到这两个函数,但是一直闹不清楚有啥子用法,今天看《windows程序设计》时发现讲到这部分内容,在这里总结一下。      首先要有个客户区的概念,书上是这么定义的:客户区是指整个应用程序窗口中没有被标题栏、边框、菜单栏、工具栏、状态栏和滚动条占用的区域。客户区免不了绘制和重绘,这里就又蹦出两个概念:有效区和无效区,其中需要重新绘制的部分被称作无效区,如果客户区有了无效区域,结果

菜鸟的专栏 4162

SECS/GEM协议中的关键指令详解:从S1F1到S9F9的完整指南

本文详细解析了SECS/GEM协议中从S1F1到S9F9的关键指令,涵盖设备状态管理、控制诊断、报警处理等核心功能。通过实际案例和调试技巧,帮助开发者掌握半导体制造设备通信标准,解决SECS/GEM协议在实际工程应用中的通讯难题,提升生产线智能化水平。

weixin_26899659的博客 397

1.毫米波雷达心率、呼吸原理实现(一)实例

毫米波雷达心率、呼吸检测原理本项目分两到三篇文章写完,第一阶段借鉴TI开源项目以及根据自己的见解适当更改信号处理链通过AWR1843汽车雷达传感器和DCA1000采集卡采集数据完成人体呼吸和心跳检测算法的实现。第二阶段将仿真成功的代码搬移TIAWR1843传感器并通过串口数据实现生命体征的实时处理。本文即为第一阶段实现过程。本文首先概述毫米波雷达呼吸心跳检测的原理,紧接着概述本项目信号处理流程,另外本项目第一阶段通过matlab仿真验证算法的有效性,仿真源码可关注小编并私信可取。1.概述。

Poulen的博客 2万+

UpdateData、Invalidate、InvalidateRect和UpdateWindow(转)

 在编程的时候经常把UpdateData、Invalidate、InvalidateRect和UpdateWindow四个函数混淆,在这里将简单介绍它们的区别。 UpdateData():    当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用UpdateData(FALSE);如果你希望知道用户在对话框中到底输入了

TRTV3D的专栏 857

机器学习西瓜书期末复习(2022HENU)

期末复习之机器学习 文章目录期末复习之机器学习第一章 绪论 第一章 绪论 机器学习的定义 机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。 根据训练数据是否拥有标记信息,将学习任务分为监督学习和无监督学习。 监督学习 :分类和回归 线性回归、对数几率回归、决策树、支持向量机、贝叶斯分类器、神经网络 无监督学习:聚类 聚类算法: 原型聚类:(k均值,学习向量量化,高斯混合聚类);密度聚类(DBSVAN);层次聚类(AGNES)。降维。话题分析。图分

qq_46561559的博客 2万+

03_WM_ERASEBKGND窗口重绘消息

消息处理篇:WM_ERASEBKGND 窗口重绘消息,由Cwd类Invalidate()方法触发。

成长需要沉淀。 488

基于EKF的UWB-IMU融合定位系统在农业机器人中的抗干扰优化与Matlab仿真

本文探讨了基于扩展卡尔曼滤波(EKF)的UWB-IMU传感器融合定位系统在农业机器人中的应用。通过Matlab仿真验证,该系统有效解决了农业环境中UWB信号遮挡和IMU累积误差问题,实现了厘米级高精度定位,显著提升了机器人在复杂场景下的抗干扰能力和导航可靠性。

numpy6sculptor的博客 622

手把手教你用STM32的SPI驱动MCP2517FD实现CAN FD通信(附完整代码)

本文详细介绍了如何使用STM32通过SPI驱动MCP2517FD实现CAN FD通信,涵盖硬件连接、SPI驱动编写、寄存器配置及数据收发实战。提供完整代码示例和常见问题排查指南,帮助开发者快速构建高可靠性的CAN FD通信系统,适用于汽车电子和工业控制等领域。

weixin_30607029的博客 674

wm_paint消息在窗口重绘的时候产生,那什么时候窗口会重绘??

Q:wm_paint消息在窗口重绘的时候产生,那什么时候窗口会重绘?? A:   严格地说,只有当收到WM_PAINT消息后窗口会重绘     但是引起这个消息的事件有很多,     比如:   首次创建     移动     改变大小   showwindow/

MOKA 1026

Python3实现基于ARIMA模型来预测茅台股票价格趋势

ARIMA(Autoregressive Integrated Moving Average)模型是一种广泛使用的时间序列分析方法,它可以用于对未来的数据进行预测。ARIMA模型由自回归模型(AR模型)、差分整合模型(I模型)和移动平均模型(MA模型)组成,因此也被称为ARIMA(p,d,q)模型。其中,p表示自回归阶数,d表示差分阶数,q表示移动平均阶数。具体来说,ARIMA模型可以通过以下步骤进行建模:数据预处理:对时间序列进行平稳性检验,如果不满足平稳性,则进行差分操作。

m0_64336780的博客 2万+

VC++ - 窗口重绘

一、简单介绍 1、何时重绘?常见的无非两种情况: (1)产生无效区时,此时会受到WM_PAINT消息,这是必须重绘无效区。 (2)没有产生无效区,但是我就是想往窗口上写东西时。 而对于每种情况所需要的函数也不相同: (1)对于产生无效区的重绘,必须调用BeginPaint得到DC,最后调用EndPaint释放DC. (2)没有无效无效区的重绘,调用GetDC、G

wajh07的专栏 1万+

DaVinci配置DID之二:工具链配置

本系列主要基于DaVinCi工具链来展开具体DID读写的配置以及最终实现。1,CDD准备2,工具链配置3,代码实现4,验证结果本文讲述流程2话不多说,走你~博主也是AutoSar小白,如果哪里表达的有问题,还请大佬们指点指点哈。接下来,让我们在下章关于代码具体实现的博文再相会哈~

weixin_48498880的博客 5734

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

MFC启用WM_PAINT消息实现避免文本信息因窗口重绘而消失

1、MFC在窗口大小发生变化,窗口会发生重绘,此时窗口中的文本信息就会被擦除而消失。 2、MFC提供了一个WM_PAINT消息,当窗口发生重绘时,应用程序框架同时会调用此消息的响应函数。 3、所以只要我们在这个OnPaint()消息响应函数中就行文本输入,就可以避免这个现象。 void CMapBigView::OnPaint() { CPaintDC dc(this); //

豆豆不在了 1644

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

7. 绘制 和 重绘,有效矩形 和 无效矩形

当用户在屏幕移动其他程序的窗口时,可能会遮住当前程序的部分窗口。Windows 不会保存被遮住的那部分窗口,当其他程序的窗口被移开时,Windows 会要求你的程序重新绘制刚才被遮住的部分区域。如果你自己不重绘,Windows 是不会管的。 Windows 是一个消息驱动的系统,它使用两种方式把各种事件通知给应用程序: - 把消息放到应用程序的消息队列中,让程序自己通过 GetMessage 函...

y果子 383

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

绘制和重绘,有效矩形和无效矩形

当用户在屏幕移动其他程序的窗口时,可能会遮住当前程序的部分窗口。Windows 不会保存被遮住的那部分窗口,当其他程序的窗口被移开时,Windows 会要求你的程序重新绘制刚才被遮住的部分区域。如果你自己不重绘,Windows 是不会管的。Windows 是一个消息驱动的系统,它使用两种方式把各种事件通知给应用程序: 把消息放到应用程序的消息队列中,让程序自己通过 GetMessa...

diereng5160的博客 133

[窗口重绘技术--虚拟窗口实现法]

1 Windows程序是图形窗口,各窗口之间可以互相切换。然而,就在这窗口的切换之中,涉及到一个窗口重绘的问题:当A窗口被B窗口覆盖或者部分覆盖之后,移去B窗口时,A窗口中的内容会被B窗口擦去……如下图: 2---------------------------当B窗口移去的时候,如何实现A窗口的重绘呢?这里有三种方法:1)当窗口的内容是用某种计算方法创建的时候,可以的WM_PAINT消息处理

糯米糊糊的专栏 2196

Visual C++——定时刷新重绘窗口[WM_PAINT消息]解决方案

基本概念 定时器:每隔一定时间执行一次的任务。 API SetTimer的函数原型: UINT_PTR SetTimer(HWND hWnd, UINT_PTR nIDEvent, UINT uElapse, TIMERPROC lpTimerFunc ); 其中 hWnd是和timer关联的窗口句柄,此窗口必须为调用SetTimer的线程所有;如果hWnd为NULL,...

无限迭代中...... 3695

VC的MFC中重绘函数的使用总结(整理)

原文网址:http://www.cnblogs.com/x8023z/archive/2008/12/09/mfc33.html 在刷新窗口时经常要调用重绘函数 MFC提供了三个函数用于窗口重绘 InvalidateRect(&Rect) Invalidate() UpdateWindow() 当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_N...

u011555996的博客 1295

MFC 窗口重绘

在刷新窗口时经常要调用重绘函数 MFC提供了三个函数用于窗口重绘 InvalidateRect(&Rect) Invalidate() UpdateWindow() 当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化) --WM_NVPAINT系统会自己搞定 --WM_PAINT消息对应的函数是OnPai

wowolook的专栏 1万+

InvalidateRect只是增加重绘区域,在下次WM_PAINT的时候才生效

InvalidateRect函数中的参数TRUE表示系统会在你画之前用背景色将所选区域覆盖一次,默认背景色为白色,可以通过设置BRUSH来改变背景色。 Invalidate()之后: ...OnPaint()->OnPrepareDC()->OnDraw() 所以只是刷新在OnPaint()和OnDraw()函数中的绘图语句。其它地方没有影响。 Invali...

weixin_30394633的博客 242

窗口重绘一点通

窗口重绘函数心得 在刷新窗口时经常要调用重绘函数 MFC提供了三个函数用于窗口重绘 InvalidateRect(&Rect) Invalidate() UpdateWindow() 当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化) WM_NVPAINT系统会自己搞定 WM_PAINT消息...

weixin_34190136的博客 84
上一篇: vc远程调试
下一篇: MFC的状态
happy hell
博客等级 码龄23年 136粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值