VC中实现透明窗体--SetLayeredWindowAttributes

本文介绍如何在Visual C++中使用SetLayeredWindowAttributes函数实现窗口透明效果,包括通过改变Alpha值调整透明度的方法,并提供了具体的代码示例。

      在VC中有一实现窗口透明的函数-----SetLayeredWindowAttributes(在5.0及以后版本中有)

函数原型

BOOL SetLayeredWindowAttributes(         
    HWND hwnd,               //想要实现透明的窗体句柄
    COLORREF crKey,       //颜色   
    BYTE bAlpha,             //Alpha值,取值范围是[0,255]
    DWORD dwFlags       //LWA_COLORKEY(=1)表示使用透明色; LWA_ALPHA(=2)表示使用 Alpha值
);

例子:
1、新建一基于对话框的MFC程序-----TransparentWindow

2、在 CTransparentWindowDlg  类的  OnInitDialog() 函数中加入以下代码(在 return TRUE; 前面)

 SetWindowLong(this->m_hWnd,GWL_EXSTYLE,GetWindowLong(this->m_hWnd,GWL_EXSTYLE)^0x80000);
 HINSTANCE hInst = LoadLibrary(_T("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->m_hWnd,0,128,2); 
  } 
 FreeLibrary(hInst); 
}

3、编译、运行完成

转载于:https://www.cnblogs.com/anhuizhxd/archive/2009/07/27/transparentwindow.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值