您的位置:首页 > 其它

【MFC自绘窗口】窗口设计第五课

2014-12-07 23:59 190 查看
今天说一下窗口的半透明设置,很多软件应用都有这个功能,比如QQ,迅雷等等,这种效果怎么做的呢,其实很简单

主要API,SetLayeredWindowAttributes

看一下函数原型

BOOL SetLayeredWindowAttributes(HWND hwnd,COLORREF crKey,BYTE bAlpha,DWORD dwFlags);

其中hWnd是需要透明的窗口句柄

crKey为掩码的颜色,可以用RGB(r,g,b)来指定。

bAlpha是不透明度,取值范围是(0,255,其中0代表全透明,255代表不透明。

dwFlags是透明方式,可以取两个值:LWA_ALPHA = 0×2,LWA_COLORKEY=0×1

当取值为LWA_ALPHA时,crKey参数无效,bAlpha参数有效;

当取值为LWA_COLORKEY时,窗体中的所有颜色为crKey的地方将变为透明,bAlpha参数无效。

也可以取两个值的组合:LWA_ALPHA Or LWA_COLORKEY。这样crKey的地方将变为全透明,而其它地方根据bAlpha参数确定透明度。

要使窗口拥有透明效果,需要有WS_EX_LAYERED扩展属性的支持



实现过程:

在窗口初始化的地方,比如OnInitDialog函数,调用如下代码

网上有很多朋友喜欢动态从User32.DLL中加载SetLayeredWindowAttributes

代码如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: