文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C/C++用C++品尝Vista美味:界面的毛玻璃效果
精品推荐
特别推荐
·C语言编程易犯毛病集合
·C语言编程常见问题解答(目录)
·C#程序开发中的常用函数汇总
·C/C++笔试、面试题目大汇总
·Beej的网络socket编程指南
·socket编程原理
·C语言的常用库函数使用方法分析及用途
·在C语言中如何处理时间和日期
·C++设计模式之Singleton
·VC++动态链接库编程之MFC扩展 DLL
热点TOP10
·进程和线程编程
·C语言编程易犯毛病集合
·打字游戏
·Awk 基础入门:Awk 实例编程
·asp.net中调用javascript函数实现多功能日期控件示例
·C语言编程常见问题解答之常用函数的包含文件(1)
·C# GridView 排序及分页
·C #中的几个线程同步对象方法
·无废话C#设计模式之三:Abstract Factory
·C# DataGridView隔行显示不同的颜色

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

日期:2007年12月29日 作者: 查看:[大字体 中字体 小字体]


简介

  本文将演示在基于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)。话又说回来,也不是总会添加这些毛玻璃效果的,如果计算机运行于"电池模式",或用户决定关闭透明效果,那么非客户区就不会有毛玻璃效果了,如下图所示。

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

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

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

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

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

  项目开始

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

#define WINVER 0x0600
#define _WIN32_WINNT 0x0600
#define _WIN32_IE 0x0700
  接下来包含ATL与WTL的头文件:

#define _WTL_NO_WTYPES // 不要在WTL头文件中定义CRect/CPoint/CSize
#include <atlbase.h>
#include <atltypes.h>//共享的CRect/CPoint/CSize
#include <atlapp.h>

extern CAppModule _Module;

#include <atlwin.h>
#include <atlframe.h>
#include <atlmisc.h>
#include <atlcrack.h>
#include <atltheme.h>// XP/Vista主题支持
#include <dwmapi.h>// DWM API
  如果修改完成之后就编译,将会从atltheme.h中得到4个错误。例如,以下是不会编译通过的CTheme::GetThemeTextMetrics()代码:

HRESULT GetThemeTextMetrics(..., PTEXTMETRICW pTextMetric)
{
 ATLASSERT(m_hTheme != NULL);

 //注意:因为uxtheme.h头文件,所以转换为PTEXTMETRIC。
 //替换掉PTEXTMETRICW是不对的
 return ::GetThemeTextMetrics(m_hTheme, ..., (PTEXTMETRIC) pTextMetric);
}
  在GetThemeTextMetrics() API中的转换,是对Platform SDK的uxtheme.h中错误的修正,然而,Windows SDK却没有这个错误,所以这个转换导致了一个错误,可删除函数中的这个转换,其他三个也同样。 添加边框的毛玻璃效果

  通过把毛玻璃效果从非客户区扩展到客户区,就可完成添加程序的毛玻璃效果,这个API是DwmExtendFrameIntoClientArea()。DwmExtendFrameIntoClientArea()接受两个参数:我们框架窗口的HWND和一个用于说明毛玻璃效果扩展到窗口四周多远的MARGINS结构。可在OnCreate()中调用这个API:

LRESULT CMainFrame::OnCreate(LPCREATESTRUCT lpcs)
{
 //在底部添加玻璃效果

[1] [2] [3] [4] [5] 下一页 




上一篇:队列实现打印杨辉三角

下一篇:对马踏棋盘的一点研究

相关文章:
·Photoshop制作效果逼真的哈蜜瓜
·Windows Vista震撼1600X1200高清壁纸
·vista分区软件
·又来冲击波 Vista 最新植物壁纸30张
·Flash如何制作灯光效果
·Windows Vista Ultimate中文旗舰版下载+简单破解(支持迅雷HTTP & BT)
·Windows Vista 快捷方式箭头去除器 1.3
·Vista系统使用技巧总结
·最全面的WindowsXP修改大全
·让XP硬盘图标与Vista无异
相关软件:
·蔡依林《假面的告白》MV
·Vista 主题完美风格包 V5.1
·美味餐厅(Delicious Deluxe)
·体验Windows Vista beta 1
·完美卸载2007 For VISTA V2.02.7424
·千千静听 整合超美WMP11+Vista 皮肤全插件免安装版
·电影片头的下载效果
·弹性效果的运动图片
·Winxp两步变Vista
·Vista 远程桌面连接 V6.0 绿色版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot