MFC对话框简单实现窗口全透明的方法
在Vista系统中,dwapi.dll用于实现表单的完全透明。互联网上更多的资源都是基于WTL或者C#的。这是通过发布基本MFC对话框来实现该功能的最简单方法。
这个方法只实现了整个程序(包括客户区)的窗口界面是半透明的,所以非常简单。编译运行需要Windows Vista或Windows Server 2008系统的支持,需要开启透明功能才能显示其效果。效果图改天在家里附上。
由于实现方法不包含系统检测,所以不被其他系统(即XP、200、98)处理,在这些系统中运行会出错。
实现方式:
1。创建一个项目,打开Visual Studio 2005或Visual Studio 2008的对话框程序创建basic MFC。在示例中,我使用的项目名称是VcAeroGlass。
2。添加语句
/STD afx . h
# include
# pragma comment(lib," dwmapi")
3。将以下内容添加到对话框实现文件VcAeroGlassDlg.cpp的初始函数OnnitDialog()中:
BOOL CVCAEROGASDLG::OnnitDialog()
{
CDialog::OnnitDialog()
//............................
//由系统自动生成;
省略了边距;
mar . cxleftwidth =-1;
mar . cxrightwidth =-1;
mar . cytopheight =-1;
mar . cybottomheight =-1;
CRect rect client;
GetClientRect(rect client);
mar . cytopheight = rect client。height();
DwmExtendFrameIntoClientArea(CDialog::GetSafeHwnd(),& mar);
返回TRUE
}
4。在实现文件的绘图函数OnPaint()中做一个大的测试提示如下:
void cvcaeeroglassdlg::OnPaint()
{
cpaintdcdc(this);//用于绘制
CRect rcGlassArea的设备上下文;
GetClientRect(& rcGlassArea);
dc。FillSolidRect ( &rcGlassArea,RGB(0,0,0));
//............................
//系统自动生成,省略
}
5。编译并运行程序,看看效果。
源代码可以上传:
对于VC 2005:http://download.csdn.net/source/710225
对于VC 2008 SP1:http://download.csdn.net/source/710216
0条评论