窗体透明效果

2011年12月17日 分类:学习笔记C++

使用SetLayeredWindowAttributes可以方便的制作透明窗体。

SetLayeredWindowAttributes的函数原型如下:

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 
); 

参数说明:

  • 其中dwFlags有LWA_ALPHA和LWA_COLORKEY
  • LWA_ALPHA被设置的话,通过bAlpha决定透明度.
  • LWA_COLORKEY被设置的话,则指定被透明掉的颜色为crKey,其他颜色则正常显示.
  • 要使使窗体拥有透明效果,首先要有WS_EX_LAYERED扩展属性(旧的sdk没有定义这个属性,所以可以直接指定为0x80000).

例子:

//在OnInitDialog()加入: 
ModifyStyleEx(0, WS_EX_LAYERED);
SetLayeredWindowAttributes(0, 200, LWA_ALPHA);
作者:wuyuan 本文来自Wuyuan's Blog 转载请注明,谢谢! 文章地址: https://wuyuans.com/2011/12/form-transparency