您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C语言 >> 辅导 >> 正文    
  MFC对话框简单实现窗口全透明的方法 【注册男护士专用博客】          

MFC对话框简单实现窗口全透明的方法

www.nanhushi.com     佚名   不详 

  前言:
  在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

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目