C++语言中的毛玻璃效果

开发 后端
假如你用的是Windows Vista操作系统,你会发现可以用C++语言来生成Aero毛玻璃效果,C++在应用程序中集成毛玻璃效果。

本文将演示在基于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也类似。#t#

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

Aero主题中的毛玻璃效果

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

假如在控制面板的可视效果中打开了透明玻璃效果,那非客户区看上去就像下图这样:

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

请留意,记事本的边框呈现绿色调,这是墙纸透过来的颜色,并且也可以透过标题栏看到桌面的一些图标。我们在编写代码的时候,要害只须留意composition是否打开,而不是设置了什么毛玻璃效果,因为DWM会处理毛玻璃效果绘制的部分。

项目开始

***个示例程序是不带视窗口、工具条、状态条的SDI应用程序,在运行完WTL AppWizard之后,***件事就是设置stdafx.h中的#define,以便利用Vista的新特性。Vista的Windows版本为6,且Vista中IE的版本为7,设置完成后应像下面这样:

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

在GetThemeTextMetrics() API中的转换,是对Platform SDK的uxtheme.h中错误的修正,然而,Windows SDK却没有这个错误,所以这个转换导致了一个错误,可删除函数中的这个转换,其他三个也同样。 添加边框的毛玻璃效果。

责任编辑:chenqingxiang 来源: wewill.cn
相关推荐

2021-07-06 06:07:14

CSS 技巧背景

2017-01-17 16:45:35

githubinstagramandroid

2017-02-14 17:29:42

Android毛玻璃虚化效果

2010-01-15 19:17:48

C++语言

2010-01-25 17:05:37

C++语言

2010-01-18 13:54:28

函数

2010-01-11 15:29:13

引用C++语言

2022-03-01 17:24:33

iOS兼容性方案

2011-12-25 15:35:05

ibmdwJavaC++

2018-05-08 23:46:15

微软语言Windows

2010-08-24 16:00:43

C语言

2023-10-27 11:21:20

C语言Multics语言

2009-06-30 10:46:05

多级指针

2023-12-21 11:46:48

C语言柔性数组开发

2022-07-27 16:40:25

C语言

2021-12-06 11:19:47

语言指针内存

2011-05-13 17:25:34

C

2022-01-06 14:25:24

C语言指针内存

2010-01-15 17:38:37

C++语言

2011-03-30 11:01:13

C语言随机
点赞
收藏

51CTO技术栈公众号