窗口未响应时出现的白色闪烁
响应 出现 窗口 闪烁 白色
2023-09-14 09:10:45 时间
问题
如果一个窗口由于某种原因(例如,窗口从被遮盖状态变为显示状态)需要重新绘制,但是窗口所属的线程来不及处理窗口重绘消息,这个时候,Windows会使用白色来绘制这个窗口,或者,至少我们会收到用户关于这种问题的反馈(他们会说窗口有一瞬间变成了白色)。
实际上,Windows只是会使用窗口类里指定的背景画刷来绘制窗口而已。因为大多数开发者使用COLOR_WINDOW这个颜色值,而COLOR_WINDOW在大部分的颜色配置系统中是白色的,所以,用户最终看到的结果是:Windows使用白色来绘制窗口。
为什么Windows要这样设计呢?
有人会问了:”为什么要多次一举再重绘一次呢?直接不管它就不就完了?”
的确,我们之前也是采用”什么都不做”的方案,但是这个方案的结果是:窗口会显示冻结之前的画面。
假设有这种场景:用户正在使用资源管理器,当他尝试恢复一个应用程序窗口时这个窗口恰巧挂起了。这个时候,如果采用”什么都不做”的方案,则他会看到,窗口的主界面会显示资源管理器的画面,用户有可能以为是资源管理器卡住了,实际上,是应用程序卡住了。当他在这个界面点击鼠标的时候,实际上是点击的卡住后的应用程序。
在Windows XP中,对未响应的窗口执行绘制的方法有点不一样。现在,系统会捕获窗口中未响应的那一部分区域,并尝试绘制它。但是,如果系统不能捕获到所有的窗口区域,比如,窗口的部分区域被覆盖了,则这部分区域会使用窗口类的背景画刷来进行绘制。
这就是你为什么看到一个白色窗口闪烁的原因。
总结
如果希望制作一个”丝滑”的用户界面,要
相关文章
- jmeter响应信息unicode 编码转成中文
- 关于IE浏览器以及Firefox下冒泡事件的响应层级
- 第三百四十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—Requests请求和Response响应介绍
- 【Teradata】系统吞吐量重要参数QPS(TPS)、并发数、响应时间
- SAP UI5 web Component的React组件,如何实现事件响应
- 关于 SAP Gateway 响应头部 Last Modified 字段的赋值逻辑
- SAP 电商云 Spartacus UI 的响应式 UI 实现细节
- 【SpringBoot笔记18】SpringBoot实现统一异常处理、统一结果响应、统一参数校验
- 配电网与微电网中虑需求响应的研究【基于价格型需求响应】(Python代码实现)
- 内网渗透(十九)之Windows协议认证和密码抓取-网络认证(基于挑战响应认证的NTLM协议)
- 让窗口捕获并响应WM_MOUSEHOVER和WM_MOUSELEAVE消息
- 5.Windows应急响应:挖矿病毒
- 实训-利用HTML+CSS做响应式项目网页
- Spring Cloud Zuul请求响应信息输出