![]() ![]() |
|
MFC对话框简单实现窗口全透明的方法 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/11/1 20:40:24 文章录入:杜斌 责任编辑:杜斌 | |
|
|
在Vista系统中利用dwapi.dll实现窗体全透明的方法,在网上更多的资源是基于WTL或是C#,借此发布一下基本MFC对话框实现此此功能的最简单的方法。 本方法只是实现整个程序的窗口界面(包括客户区)呈现半透明的效果,因此很简单。编译及运行需要 Windows Vista 或者 Windows Server 2008 系统的支持并且需要开启透明功能才能显示其效果。效果图改日回家附上。 因为实现方法未包含系统检测,未作其它系统(即XP、200、98)的处理方式,在这些系统中运行会报错。 实现方法: 1、创建工程,打开Visual Studio 2005 或者 Visual Studio 2008 创建基本MFC的对话框程序,在例子中我采用的工程名是VcAeroGlass。 2、在stdafx.h中添加利用dwapi.dll的声明 //stdafx.h #include <dwmapi.h> #pragma comment(lib,"dwmapi") 3、在对话框实现文件VcAeroGlassDlg.cpp的初始函数OnInitDialog()中作如下添加: BOOL CVcAeroGlassDlg::OnInitDialog() { CDialog::OnInitDialog(); //............................ //系统自动成,省略 MARGINS mar; mar.cxLeftWidth = -1; mar.cxRightWidth = -1; mar.cyTopHeight = -1; mar.cyBottomHeight =-1; CRect rectClient; GetClientRect (rectClient); mar.cyTopHeight = rectClient.Height (); DwmExtendFrameIntoClientArea (CDialog::GetSafeHwnd(),&mar ); return TRUE; } 4、在实现文件的绘制函数OnPaint()中作考试大提示如下添加: void CVcAeroGlassDlg::OnPaint() { CPaintDC dc(this); // 用于绘制的设备上下文 CRect rcGlassArea; GetClientRect ( &rcGlassArea ); dc.FillSolidRect ( &rcGlassArea, RGB(0,0,0) ); //............................ //系统自动成,省略 } 5、编译运行程序即可看到效果。 源码以上传: For VC2005: http://download.csdn.net/source/710225 For VC2008SP1: http://download.csdn.net/source/710216 |
|
![]() ![]() |