Windows 桌面窗口管理器

前言

Windows 桌面窗口管理器(Desktop Window Manager,简称DWM)。桌面窗口管理器是Windows桌面环境的核心组件,主要负责处理窗口的显示和管理。它通过利用图形硬件加速技术,将窗口的处理转移到显卡上,提供流畅的图形体验和高效的窗口管理。

正文

在 Windows Vista 之前,Windows 程序将直接绘制到屏幕上。 换句话说,程序将直接写入视频卡显示的内存缓冲区。 如果窗口无法正确重新绘制自身,此方法可能会导致视觉对象。 例如,如果用户将一个窗口拖动到另一个窗口上,而下面的窗口无法足够快地重新绘制自身,则最顶部的窗口可能会留下一条线索:

导致跟踪的原因是两个窗口都绘制到同一个内存区域。 拖动最顶部的窗口时,必须重新绘制其下方的窗口。 如果重新绘制速度太慢,会导致上图中显示的项目。

Windows Vista 通过引入桌面窗口管理器 (DWM) 从根本上改变了窗口的绘制方式。 启用 DWM 后,窗口不再直接绘制到显示缓冲区。 相反,每个窗口绘制到屏幕外内存缓冲区,也称为 屏幕外表面。 然后,DWM 将这些表面组合到屏幕上。

与旧图形体系结构比,DWM 具有几个优势。

  • 重新绘制的消息更少。 当一个窗口被另一个窗口阻止时,受阻的窗口不需要重新绘制自身。
  • 减少了项目。 以前,拖动窗口可能会创建可视项目,如前所述。
  • 视觉效果。 由于 DWM 负责组合屏幕,因此它可以呈现窗口的半透明和模糊区域。
  • 自动缩放,实现高 DPI。 虽然缩放不是处理高 DPI 的理想方法,但它是一种可行的回退方式,适用于不针对高 DPI 设置设计的旧应用程序。
  • 备用视图。 DWM 可以以各种有趣的方式使用屏幕外表面。 例如,DWM 是 Windows Flip 3D、缩略图和动画过渡背后的技术。

但请注意,不保证会启用 DWM。 图形卡可能不支持 DWM 系统要求,用户可以通过**"系统属性"**控制面板禁用 DWM。 这意味着程序不应依赖于 DWM 的重新绘制行为。 在禁用 DWM 的情况下测试程序,确保它重新绘制正确。

总结

DWM的核心功能是窗口的渲染和合成。当一个窗口被打开或改变尺寸时,DWM会将窗口的内容绘制到图形缓冲区中,并通过显卡将缓冲区的内容显示在屏幕上。DWM还支持硬件加速,利用显卡的计算能力来加速窗口的渲染和合成过程,提供更快速的窗口响应和更平滑的界面动画。

learn.microsoft.com/zh-cn/windo...

相关推荐
IT_陈寒14 小时前
Python开发者必知的5大性能陷阱:90%的人都踩过的坑!
前端·人工智能·后端
流浪克拉玛依14 小时前
Go Web 服务限流器实战:从原理到压测验证 --使用 Gin 框架 + Uber Ratelimit / 官方限流器,并通过 Vegeta 进行性能剖析
后端
孟沐15 小时前
保姆级教程:手写三层架构 vs MyBatis-Plus
后端
星浩AI15 小时前
让模型自己写 Skills——从素材到自动生成工作流
人工智能·后端·agent
华仔啊17 小时前
为啥不用 MP 的 saveOrUpdateBatch?MySQL 一条 SQL 批量增改才是最优解
java·后端
武子康18 小时前
大数据-242 离线数仓 - DataX 实战:MySQL 全量/增量导入 HDFS + Hive 分区(离线数仓 ODS
大数据·后端·apache hive
砍材农夫18 小时前
TCP和UDP区别
后端
千寻girling19 小时前
一份不可多得的 《 Django 》 零基础入门教程
后端·python·面试
千寻girling19 小时前
Python 是用来做 AI 人工智能 的 , 不适合开发 Web 网站 | 《Web框架》
人工智能·后端·算法
贾铭19 小时前
如何实现一个网页版的剪映(三)使用fabric.js绘制时间轴
前端·后端