关于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

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

  1. 实例浅析epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO

    一.基本概念 我们通俗一点讲: Level_triggered(水平触发):当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写.如果这次没有把数据一次性全部读写完( ...

  2. Uniapp返回上一页触发页面更新

    文章目录 前言 一.难点有哪些? 二.返回上一页 三.触发上一页的更新 四.监听reFresh 五.示例源码 总结 前言 本来返回上一页可以使用uni.navigateBack(OBJECT),但是这 ...

  3. 浅谈示波器X-Y模式 示波器触发模式及使用

    描述 示波器是一种用途十分广泛的电子测量仪器.它能把肉眼看不见的电信号变换成看得见的图像,便于人们研究各种电现象的变化过程.接下来我们就来了解一下示波器的X-Y模式以及示波器触发模式,同时了解一下两种 ...

  4. 我的世界服务器修改原版血量,我的世界服务器MythicMobs插件教程技能编写血量限制与触发几率...

    小编为大家带来了<我的世界>服务器MythicMobs插件教程技能编写血量限制与触发几率,由于这两个太简单了,又都是用来控制[触发器]的,所以就放在一起讲了. 1)血量限制 故名思议,就是 ...

  5. 水平触发LT、边缘触发ET

    Level_triggered(水平触发 LT):当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写.如果这次没有把数据一次性全部读写完(如读写缓冲区太小),那么下 ...

  6. 软件打开时间、窗体透明度、背景色---《用delphi开发共享软件》-15.1任务管理器...

    1.计算软件启动了多长时间:用定时器,每分钟触发一次: procedure TFrmMain.tmCheckLegalTimer(Sender: TObject); Var Minutes:LongI ...

  7. 引用-ZIGBEE-ZSTACK网络配置相关问题

    下面是以道友问的问题,这里简单做分析,仅供交流学习用,有什么不对之处还请各位大虾指正.鄙人邮箱为:peterpanjy@163.com. 欢迎交流!! 1: 最主要的就是路由问题.我用06协议栈自带的 ...

  8. Android点击事件之多点触摸与手势识别

    前言 最近遇到想要实现三指滑动监听的需求,实现代码不方便贴出来,但是思路还是可以记录一下. Muilti-touch 双指缩放探索 首先要实现OnTouchListener接口,然后重写方法: pub ...

  9. TS2003基于触摸屏的应用

    ********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...

最新文章

  1. 网络资源(9) - TDD视频
  2. php 提取全部html标签,php提取html中的img标签
  3. 对一条常用命令(netstat结合awk统计TCP连接数)的理解
  4. 成功解决AttributeError: module 'tensorflow' has no attribute 'merge_all_summaries'
  5. js中直接对字符串转义-用于solr ulr 关键词转义
  6. win10系统使用MarkdownPad2无法渲染
  7. dns服务器在电脑上有什么作用,DNS服务器是什么 DNS服务器的作用有哪些【详解】...
  8. 【LeetCode】两数之和
  9. 查看端口命令及端口功能详解
  10. WebPager For ASP.NET (基于ASP.NET的数据分页控件)
  11. OpenCV-Python教程(8、Canny边缘检测)
  12. git 微盘_GitHub - 123ufo/VdiskSDK-Android: 微盘Android客户端SDK
  13. js播放Amr音频_Mp3转Amr
  14. 2022-2028全球运维安全管理行业调研及趋势分析报告
  15. 电脑锁屏蓝牙鼠标断开_如何阻止蓝牙鼠标不断断开
  16. flutter 高效计算时间差
  17. 多媒体制作技术心得体会_多媒体技术学习心得体会总结
  18. 终端/SSH/Telnet ConnectBot v1.7.1中文版
  19. SQLserver数据库教程
  20. JavaWeb项目+MVC三层架构+Mysql+Tomcat+汽车配件销售系统前后端+可以用于学习javaweb项目入门

热门文章

  1. Java中集合(三)Stack
  2. 【Python7】csv/excel/matplotlib,排序/树遍历,线/进程,文件/xml操作,百度人脸API,aiohttp/hal/restful/curl
  3. 【Linux网络编程】TCP 和 UDP 数据报格式详解
  4. source命令与 .命令
  5. Redis源码剖析(一)服务器与客户端交互流程
  6. Linux操作(6)—— 查找文件及查看文件内容
  7. PHP中获取当前页面的完整URL
  8. 使用批处理查看.class文件内容--javap指令
  9. /MD, /MDD, /ML, /MT,/MTD(使用运行时库)
  10. 机器学习物语(1):世界观设定