但是有个函数可以轻松实现,就是SetLayeredWindowAttributes, 运用这个函数便可轻松实现窗口透明效果。

简单介绍一下SetLayeredWindowAttributes,详见msdn。

BOOL SetLayeredWindowAttributes(
HWND hwnd, // handle to the layered window
COLORREF crKey, // specifies the color key
BYTE bAlpha, // value for the blend function
DWORD dwFlags // action
);

Windows NT/2000/XP: Included in Windows 2000 and later.
Windows 95/98/Me: Unsupported.
Header: Declared in Winuser.h; include Windows.h.
Library: Use User32.lib.

其中dwFlags有LWA_ALPHA和LWA_COLORKEY。LWA_ALPHA被设置的话,通过bAlpha决定透明度,LWA_COLORKEY被设置的话,则指定被透明掉的颜色为crKey,其他颜色则正常显示。

注意:要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性。

实现代码:

SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,
GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0×80000);
HINSTANCE hInst = LoadLibrary(“User32.DLL”);
if(hInst)
{
typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL;
//取得SetLayeredWindowAttributes函数指针
fun=(MYFUNC)GetProcAddress(hInst, “SetLayeredWindowAttributes”);
if(fun)fun(this->GetSafeHwnd(),0,128,2);
FreeLibrary(hInst);
}

上面的一段代码加入到OnInitDialog()函数中,便可初始化窗口为半透明了,若想改变透明度,只要修改第三个参数便可,范围为0~255。

转载于:https://www.cnblogs.com/CBDoctor/archive/2012/12/30/2839949.html

VC realize the transparent windows相关推荐

  1. Transparent Windows in WPF

    转自 http://blogs.msdn.com/b/dwayneneed/archive/2008/09/08/transparent-windows-in-wpf.aspx Introductio ...

  2. VC串口通信(Windows API)

    本文转载自基于Windows API的VC++串口通信详解,以下附上大白的理解. 简介 在Win32下,可以使用两种编程方式实现串口通信,其一是使用ActiveX控件,这种方法程序简单,但欠灵活.其二 ...

  3. vc 下编写的 Windows窗口小程序 计算机

    对于一个Windows窗口计算器小程序 解释 #include "stdafx.h" #include <windows.h> #include <windows ...

  4. 用VC写Assembly代码(6)--附录2[windows进程中的内存结构]

    在阅读本文之前,如果你连堆栈是什么多不知道的话,请先阅读文章后面的基础知识. 接触过编程的人都知道,高级语言都能通过变量名来访问内存中的数据.那么这些变量在内存中是如何存放的呢?程序又是如何使用这些变 ...

  5. MFC 利用小型数据库Access 少步惆 教你用VC开发

     目录(?)[+] 情境一     面向对象基础应用 任务类的声明及成员的访问控制 任务构造函数和析构函数的应用 任务成员函数的应用 任务继承性的作用 任务函数的重载的应用 任务虚函数的使用 任务 ...

  6. [转载]安装openssl,windows版

    解压OpenSSL以后, 在其目录下可以发现有个INSTALL.W32文件,这个文件就是在windows下的安装说明.你可以用UltraEdit打开它 . 1.安装perl,perl可以从http:/ ...

  7. vc++实现avi文件的操作 用于视频解析及录制(转)

    vc++实现avi文件的操作 为了对avi进行读写,微软提供了一套API,总共50个函数,他们的用途主要有两类,一个是avi文件的操作,一类是数据流streams的操作. 1.打开和关闭文件 AVIF ...

  8. VC++调试程序、快捷键以及Debug版本与Release版本

    1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Release状态.C/C++标签中的Category选General, ...

  9. VC++网络资源集合

    http://www.jizhuomi.com/software/257.html     第一部分:VS2010/MFC开发环境     第二部分:VS2010/MFC应用程序框架     第三部分 ...

最新文章

  1. php完美实现下载远程图片保存到本地(保存微信头像)
  2. 如何选择MBA教育 读MBA前必答10个问题
  3. 面向对象、继承、抽象方法重载知识点整理
  4. c++和python有联系吗_Python和C++交互
  5. 为什么要先装IIS后装.Net Framework?
  6. 二维码_encode与decode
  7. IOS 支付宝支付开发流程
  8. 191029_中国地震局爬取
  9. C++中在使用自定义类型(结构体类型)的stl数据结构时,operate的用法
  10. 正确激活报表插件的方法
  11. app开发的三大技术框架
  12. 用c语言编程质数和合数,《质数和合数》教学设计
  13. hdu 2087 剪花布条 kmp小水
  14. oracle12c 开启em,Oracle12C的EM无法访问怎么办?
  15. 数据分析-思维分析逻辑day02
  16. openwrt on MT7688 wifi启动方法
  17. ac9260网卡linux,160Mhz频宽的怒吼,Intel Wireless-AC 9260 无线网卡评测
  18. clock jitter和clock skew
  19. 《微信小程序》微信小程序用java后台连接数据库进行操作。
  20. Day19(JavaSE基础结束)

热门文章

  1. 使用Spring Security进行自动登录验证
  2. python中Scrapy的安装详细过程
  3. 彻底搞懂四元数(转载)
  4. LPeg 0 10的编译与使用
  5. 推荐系统知识梳理——GBDTLR
  6. CV之Haar特征描述算子-人脸检测
  7. 入门讲解:使用numpy实现简单的神经网络(BP算法)
  8. toj 4609 Internal Rate of Return
  9. ug中模型不见了怎么办_关于UG参数化建模的定义
  10. 主机甲采用停等协议向主机乙_习题