MFC对话框简单实现窗口全透明的方法
来源:互联网 发布:淘宝两个月还申请售后 编辑:程序博客网 时间:2024/05/14 08:51
MFC对话框简单实现窗口全透明的方法
前言:
在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
发布:薛雪 E_mail:SnowEmail3074@163.com
备注:实现方法虽然很简单,转载时请注明出处,谢谢!
- MFC对话框简单实现窗口全透明的方法
- MFC对话框简单实现窗口全透明的方法
- C#简单实现窗口全透明
- VB简单实现窗口全透明
- MFC 对话框(窗口)透明
- MFC实现透明窗口
- MFC实现对话框透明显示:对话框透明而上面的文字不透明
- QT实现窗口透明的方法
- QT实现窗口透明的方法
- QT实现窗口透明的方法
- QT实现窗口透明的方法
- QT实现窗口透明的方法
- QT实现窗口透明的方法
- 关于在MFC中实用在基于对话框窗口上面绘制折线的实现方法
- 透明窗口的实现
- .隐藏基于对话框的MFC应用程序窗口的方法
- 隐藏基于对话框的MFC应用程序窗口的方法
- MFC中弹出对话框,父窗口消失不见的实现
- 国内几大网络安全公司介绍
- CPU如何设置溢出标志OF
- 將机器升级为域服务器
- 数据访问公共类(带事务的处理)
- 时间在发酵
- MFC对话框简单实现窗口全透明的方法
- 使用snmp4j实现Snmp功能(三)
- 10+设计资源和灵感的必备网站
- net-snmp 一些系统mib节点值的存储位置 和 超时时间的设置
- DOM常用操作
- 选择Java接口还是抽象类--转载
- 用Djunit报告代码测试覆盖率
- 页面跳转VS框架包含
- 交叉线与直通线的区别