用C++品尝Vista美味:界面的毛玻璃效果

2012-03-01
浏览
导读:简介 本文将演示在基于Windows Vista的普通Windows应用程序及对话框程序中,如何利用C++来生成Aero毛玻璃效果,此处使用的是Beta 2版本的Vista及Windows SDK,

简介

本文将演示在基于Windows Vista的普通Windows应用程序及对话框程序中,如何利用C++来生成Aero毛玻璃效果,此处使用的是Beta 2版本的Vista及Windows SDK,也许在后续的版本中,一些API在细节上会有所变化。另外,文中没有使用MFC,全部例子用WTL 7.5生成,其可在http://wtl.sourceforge.net/下载得到,虽然此处使用的是Visual C++ 2003,但Visual C++ 2005也类似。

Aero主题及毛玻璃效果,是随同Vista"桌面窗口管理(DWM)"而来的新特性,也是微软市场推广的一个重心,在应用程序中集成毛玻璃效果,当打开Aero主题时,程序看上去会显得非常与众不同--很酷,对吧。

Aero主题中的毛玻璃效果

当以Aero为主题时,Vista会根据计算机显卡进行判断是否开启毛玻璃效果,此时桌面由DWM进行绘制,而DWM使用一个composition进程来渲染桌面,其会在顶层窗口的非客户区自动使用Aero主题元素(有点类似于Windows XP)。话又说回来,也不是总会添加这些毛玻璃效果的,如果计算机运行于"电池模式",或用户决定关闭透明效果,那么非客户区就不会有毛玻璃效果了,如果在控制面板的可视效果中打开了透明玻璃效果,那非客户区看上去就像下图这样:

请留意,记事本的边框呈现绿色调,这是墙纸透过来的颜色,并且也可以透过标题栏看到桌面的一些图标。

我们在编写代码的时候,关键只须留意composition是否打开,而不是设置了什么毛玻璃效果,因为DWM会处理毛玻璃效果绘制的部分。

C++类对象的拷贝构造函数分析

C++中用#define访问类的私有成员

C/C++中命令行参数的原理

exit()与return()函数的差别

C/C++中函数指针的含义