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...

相关推荐
william_djj9 分钟前
python3.8 提取xlsx表格内容填入单个文件
windows·python·xlsx
点云SLAM9 小时前
C++内存泄漏检测之Windows 专用工具(CRT Debug、Dr.Memory)和Linux 专业工具(ASan 、heaptrack)
linux·c++·windows·asan·dr.memory·c++内存泄漏检测·c++内存管理
LuiChun9 小时前
Docker Compose 容器服务查询与文件查看操作指南(Windows Docker Desktop 版)【一】
linux·运维·windows·docker·容器
无限进步_11 小时前
【C++】大数相加算法详解:从字符串加法到内存布局的思考
开发语言·c++·windows·git·算法·github·visual studio
love530love11 小时前
彻底解决 ComfyUI Mixlab 插件 Whisper.available False 的报错
人工智能·windows·python·whisper·win_comfyui
习惯就好zz11 小时前
[实战笔记] 从 Qt 5.12.9 跨越到 Qt 6.x 完美迁移指南 (Windows + VS)
windows·qt·msvc·qt5·qt6·迁移
小马爱打代码12 小时前
SpringBoot:封装 starter
java·spring boot·后端
STARSpace888812 小时前
SpringBoot 整合个推推送
java·spring boot·后端·消息推送·个推
石像鬼₧魂石12 小时前
Windows Server 2003 域控制器靶机搭建与渗透环境配置手册
linux·windows·学习
抠头专注python环境配置12 小时前
解决“No module named ‘tensorflow‘”报错:从导入失败到环境配置成功
人工智能·windows·python·tensorflow·neo4j