微软图形MSDN

xiaoxiao2021-02-28  123

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 半透明窗口可以响应鼠标动作。

转载请注明原文地址: https://www.6miu.com/read-74835.html

最新回复(0)