使用桌面窗口管理器创建特殊效果

本文介绍了如何在C#编程中利用桌面窗口管理器(DWM)来创建特殊的窗口效果,如异形窗口。内容主要针对2014年的技术实践,为开发者提供参考。
摘要由CSDN通过智能技术生成

2014/09/18

在为了在C#下实现异形窗口,我找到了下面这种方式,供参考


Aero 玻璃效果
使用桌面窗口管理器创建特殊效果

Ron Fosner

本文讨论:
  • 理解 DWM
  • 对 DWM 编程
  • 在玻璃区域上绘制和合并实时缩略图
本文使用了以下技术: 
Windows Vista、.NET Framework
下载本文中所用的代码:  DWM2007_04.exe  (166 KB) 
浏览在线代码 
我一直盼望着 Windows 新版本的发布。令人感兴趣的事情莫过于浏览 MSDN ® 和 SDK 文档,查找一些可以利用和依赖的最新创新,然后让朋友和同事以及您的老板(如果幸运的话)大开眼界。Windows Vista™ 在这方面包含许多诱人的内容。自从听说该版本将三维/组合层集成到桌面以来,我就特别希望获得该版本。多年来我已编写了数不清的三维应用程序,但我发现令人烦恼的一件事是,虽然能够在三维应用程序中提供非常酷且令人赏心悦目的用户界面,但在非三维应用程序中却不能。有了 Windows Vista 和桌面窗口管理器 (DWM),这种情况就发生了改变(请参见 图 1)。
图 1  DWM 可以实现诸如 Flip 3D 任务切换等功能 (单击该图像获得较大视图)
DWM 是一种新界面,用于管理如何将运行和呈现的各种窗口合并到 Windows Vista 桌面上。Windows ®Presentation Foundation (WPF) 提供了一种更高级别的层,控制着到桌面层的呈现,Windows Display Driver Model (WDDM) 用于处理到显示器的实际低级呈现。本文仅讨论如何使用 DWM 界面。有关该主题的详细信息,请阅读 David Chappell 编写的 MSDN 文章“Windows Presentation Foundation 简介”( msdn2.microsoft.com/aa663364.aspx)。WDDM 之所以是本文通篇关注的唯一内容,是因为它可以通过 DWM 界面实现新效果,而且可以修复一些特定问题。

DWM 的技术概览
在除 Windows Vista Home Basic 之外的所有 Windows Vista 版本中均提供 DWM 界面,通过 dwm.exe 可以启动该界面。系统中的所有应用程序都可以从 DWM 获益,而无需进行修改或重新编译。不过,选择利用特定 DWM 功能的应用程序可以调用 dwmapi.dll 中的界面(DWM 的公用界面),然后将这些界面传递到 dwm.exe。界面声明可在 dwmapi.h 中找到,并且可以从  windowssdk.msdn.microsoft.com 在线获取最新的 API 信息。
Windows Vista 在设计上对每个窗口都使用图形加速器,而不是仅针对三维 DirectX ® 应用程序。为了实现这一点,DWM 需要与 WDDM 通信,后者是图形处理器和视频内存的最终所有者。(DWM 依赖于 milcore.dll,后者是与 Windows Presentation Foundation 共享的组件,用于输出和呈现到 DirectX。)呈现操作由 DWM 中的单独线程处理,拥有 DirectX 设备的用户无法对其进行访问。另外,大多数应用程序本身有处理呈现操作和 UI 的线程(如典型的 Win32 ® 应用程序中的 USER 消息弹出线程),但其与 DWM 的呈现线程不冲突。DWM 获取一个窗口列表,并在树结构中管理其位图,然后将其组合到最终桌面。换言之,每个应用程序均呈现自己的位图,然后由 DWM 进行组合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值