前言:
在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
# <dwmapi.h>
#pragma comment(lib,"dwmapi")
3、在对话框实现文件VcAeroGlassDlg.cppOnInitDialog中作如下添加:
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 );
TRUE;
}
4、在实现文件绘制OnPa中作如下添加:
void CVcAeroGlassDlg::OnPa
{
CPaDC 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
发布:薛雪 E_mail:[email protected]
备注:实现思路方法虽然很简单转载时请注明出处谢谢!
最新评论