欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

关于OnPaint、FormPaint会不停的触发 触发多次的情形---讨论总结

发布时间:2024/4/17 69 豆豆
生活随笔 收集整理的这篇文章主要介绍了 关于OnPaint、FormPaint会不停的触发 触发多次的情形---讨论总结 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

关于OnPaint会不停的一直触发 触发多次的问题,是这样的 首先OnPaint是响应windows的WM_PAINT消息的,你显示器上 能看到的比如说 按钮button, memo什么的 都是画出来的

但是再程序运行的过程中 可能会发生变化,比如 你在代码里 定时把一个button删除 你虽然程序上 删除了 这个button 但是 如何让用户看到 还是 需要 反映再 显示器上的,要想反映在

显示器上 那么就需要 重新 再次 把这个 form画一遍。

举例:两个form 其中一个form2.ShowModal 遮罩住了form1 ,假如form1被完全遮罩了 那么 form1的onPaint事件 就不会被触发 ,是由windows 根据显示器 看到的内容 动态的选择

合适的时机 给程序 发送WM_PAINT消息的,那什么叫 合适的时机呢 就是 你眼 当前看到的内容 或 其它情况 比如当前光标再窗体1上 等等 这个是windows 显示技术的核心 具体我们不清楚。

以下是我师傅的说法:

实际上是对WM_PAINT消息的响应
实际上,现在的Windows要比早年的,少触发好多次 原来,你窗口被别的窗体遮盖,别的窗体挪走,就会触发,现在一般不会,Windows的桌面混合器会缓存
所以就不一定触发了  你窗口创建完显示时,Windows会发个WM_PAINT消息给程序自绘,你窗体上的控件删除或移动位置时,会调用API来标记某些区域无效,然后Windows会在它认为合适的时间点,发WM_PAINT消息让你的程序重绘显示  重绘是一种优先级比较低的消息,而且Windows会合并这个消息  ----------------------------------------------------------------- 综上:凡是自己绘画的代码 最好写在OnPaint事件里 这样 才能让 windows不停的发送重绘消息 重绘 保持 自己的绘画内容 不消失。 我自己做的demo如下:http://files.cnblogs.com/files/del88/OnPaint.zip

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/del88/p/6368128.html

与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是生活随笔为你收集整理的关于OnPaint、FormPaint会不停的触发 触发多次的情形---讨论总结的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。