设置窗口的透明度

第一步 定义功能

  1. typedef BOOL (FAR PASCAL * FUNC1)(    
  2.   
  3. HWND hwnd, // handle to the layered window    
  4.   
  5. COLORREF crKey, // specifies the color key    
  6.   
  7. BYTE bAlpha, // value for the blend function    
  8.   
  9. DWORD dwFlags // action    
  10.   
  11. );    

 第二步 实现代码

在OnInitDialog中加入下列代码(如果在SDI里面,应该是在OnCreat里面添加)

.....

  1. HMODULE hModule = GetModuleHandle("user32.dll");    
  2.   
  3. FUNC1 SetLayeredWindowAttributes;    
  4.   
  5. SetLayeredWindowAttributes = (FUNC1) GetProcAddress (hModule, _T( "SetLayeredWindowAttributes" ) );    
  6.   
  7. // 设置分层扩展标记    
  8.   
  9. SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE) | 0x80000L);    
  10.   
  11. // 70% alpha    
  12.   
  13. SetLayeredWindowAttributes(GetSafeHwnd(), 0, (255 * 70) / 100, 0x2);    

工作作完成,怎么样,现在你可以运行你的程序来查看效果,即使背景变化也能立刻反映到你的窗口当中,这一点比金山词霸的效果要好。

第三步:如何除去透明选项?

// 除去分层扩展标记

SetWindowLong(GetSafeHwnd(),, GWL_EXSTYLE,

GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE) & ~ 0x80000L);

// 重画窗口

RedrawWindow();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值