没有合适的资源?快使用搜索试试~ 我知道了~
VC++调用UpdateLayeredWindow实现半透明窗体[定义].pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 77 浏览量
2021-10-12
01:17:57
上传
评论
收藏 103KB PDF 举报
温馨提示
试读
5页
VC++调用UpdateLayeredWindow实现半透明窗体[定义].pdf
资源推荐
资源详情
资源评论
最近看了桌面天气秀这款小软件,其界面精致漂亮,而且可以透明显示,还有
个特别有趣的功能就是能让窗体固定在桌面上并且鼠标可以“穿透”而窗体不
受任何影响,这就是带着些许神秘的“有影无形”的功能。
事实上要实现这种“有影无形”的功能,很简单,我相信聪明的您一
定很快会想到怎么做。几句代码就可以搞定,给你点提示,只有在 2000 以上的
Win 操作系 统才支持(当然如果你有足够的时间可以完全可以在 98 上实现)。
那么今天我们主要讨论一下窗体的半透明显示, 其实,如果仅仅要实现窗体的半
透明显示,很简 单, UpdateLayeredWindow调用就可以了,网上去搜一下几乎
都是贴的这个函数怎么怎么实现窗体的半透明, 在往下就没了, 比如此函数有个
缺 陷,就是经过此函数处理过的窗体,其上面的控件都透明了。诸如此类的问
题至少到现在我在网上没找到一个让人感觉满意的解决方案。
记得在一个所谓专业的 C#网站上看到一篇题为“ XP下透明窗体的完美
实现”,当时看了还真高兴一阵子,可是把代码下下来一看,又是被忽悠了,里
面就调用了 UpdateLayeredWindow 函数实现透明然后加个旋转显示,这样子就
算完美了, 我晕!这个函数查查资料谁不会。 看来还是自己动手, 不知道有心 的
朋友注意到没有,在桌面天气秀里,打开设置,然后快速拖动,会看到上面的窗
体明显脱离, 这就是多层窗口留下的尾巴。 下面的透明窗体是背景, 上面的窗体
承 载控件。在拖动下层窗体的时候让上层窗体跟着一起动。对于小软件来说,
效果还可以。 事实上, 今天我实现的也和这个思路差不多, 不过我这个上下两层
窗体是父 子关系,它们各施其职, 但是又没有拖动时留下的尾巴 ( 窗口移动的处
理) ,我把这些功能都封装在一起了,只需要简单地把你要在透明窗体上显示的
窗体传过去以 及透明处理的图片就 OK了。限于篇幅下面给绘制函数以及调用示
例:
bool DrawAlpha(Image* pBgImg, HWND hWnd)
{
if (!::IsWindow(hWnd)) return false;
CWndDecorate wndDecor(hWnd);
//wndDecor.SetAlpha((255 * 20) / 100);
//wndDecor.ShowOnDesk();
RECT rcWnd;
::GetWindowRect(hWnd, &rcWnd);
int nWid = rcWnd.right - rcWnd.left;
int nHei = rcWnd.bottom - rcWnd.top;
HDC hdcTemp = ::GetWindowDC(hWnd);
HDC hdcMemory = ::CreateCompatibleDC(hdcTemp);
资源评论
czq131452007
- 粉丝: 2
- 资源: 12万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功