微软图形MSDN

16 篇文章 0 订阅
8 篇文章 0 订阅

http://msdn.microsoft.com/zh-cn/windows/ff452054(en-us).aspx

关于透明的MFC窗口

(2009-03-03 15:58:06)
<script></script>标签:

mfc

窗口

透明

it

分类:Windows开发

1 子窗口(WS_CHILD样式)设置为透明属性无效,也就是说子窗口设置不了透明属性。

2 透明属性只对弹出窗口(WS_POP样式)或者主窗口有效,一旦设置为透明属性,透明窗口中的所有子窗口也跟着透明。

3 只有CDialg、CFrameWnd、和OCX控件窗口可以设置为WS_POP样式。
4 使用WS_EX_TRANSPARENT扩展样式可以设置窗口全透明。
5 使用下面的函数可以设置两种透明方式,全透明和透明度

// hWnd 设置为透明窗口
// clr 透明颜色
// byAlpha 透明度数,0-255
// dwFlags==LWA_COLORKEY clr有效
// dwFlags==LWA_ALPHA byAlpha有效

来源:(http://blog.sina.com.cn/s/blog_57421ff80100cfbj.html) - 关于透明的MFC窗口_liweiwei_新浪博客

void SetTransparentWnd(HWND hWnd,COLORREF clr,BYTE byAlpha,DWORD dwFlags)
{  
 typedef BOOL (FAR PASCAL *Fun)(HWND,COLORREF,BYTE,DWORD);  
 Fun SetTransparentFun;  
 HMODULE     hModule=LoadLibrary(_T("User32.DLL"));

 if(hModule)  
 {  
  SetTransparentFun=(Fun)GetProcAddress(hModule,"SetLayeredWindowAttributes");  
  if(SetTransparentFun&&hWnd)  
  {  
   SetWindowLong(hWnd,GWL_EXSTYLE,GetWindowLong(hWnd,GWL_EXSTYLE)|0x80000L);  
   SetTransparentFun(hWnd,clr,byAlpha,dwFlags);  
  }  
  FreeLibrary(hModule);  
 }  
}

 

6 设置为全透明时,鼠标直接穿透了透明窗口。

7 半透明窗口可以响应鼠标动作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值