【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
代码如下:
主要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函数,调用如下代码
代码如下:
相关文章推荐
- 【MFC自绘窗口】窗口设计第四课
- 【MFC自绘窗口】窗口设计第二课
- MFC 自绘窗口非客户区
- MFC编程之简单的窗口设计相关的方法
- 【界面设计】对话框非客户区窗口自绘
- MFC-为子窗体/子窗口的静态控件的特定位置/区域 增加提示/tips信息 使用自绘方法
- MFC中异形分层窗口设计
- MFC中自绘窗口的几个点
- MFC的窗口分割的设计与实现
- MFC的窗口分割的设计与实现以及CSplitterWnd 类分析
- MFC “打开文件窗口”和“保存文件窗口”的设计-利用CFileDialog
- MFC的窗口分割的设计与实现
- MFC的窗口分割的设计与实现
- 第十五周任务一 用MFC能设计最简单的窗口程序。
- MFC 流程跟踪(窗口设计,注册,创建)
- MFC自绘窗口的时候,OnSize
- MFC中异形分层窗口设计
- MFC窗口剖析
- 模拟MFC和WTL对Windows窗口框架消息映射机制的封装代码
- 如何设计MDI的窗口样式