首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WS_EX_LAYERED、不可见窗口和新安装的Windows

WS_EX_LAYERED、不可见窗口和新安装的Windows
EN

Stack Overflow用户
提问于 2013-11-13 10:30:50
回答 2查看 2.5K关注 0票数 3

我想和大家分享这篇文章,因为我浪费了很多时间来理解为什么WS_EX_LAYERED标志不能在新安装的Win7上工作(我的测试是在Win7上,我不知道它是否可以在Win8 o.s上复制)。

这是我的密码:

代码语言:javascript
运行
复制
...

hParentWindow=hWnd;
HWND myWnd=CreateWindowEx(WS_EX_LAYERED|WS_EX_PALETTEWINDOW,_T("STATIC"),_T(""), WS_POPUP|SS_BITMAP,position.left,position.top, position.right, position.bottom,hWnd,NULL,hInst,NULL);

然后我想添加一个透明的图层:

代码语言:javascript
运行
复制
CWnd::FromHandle(myWnd)->SetLayeredWindowAttributes(RGB(0,0,0), 255*0.6, LWA_ALPHA);

运行代码,窗口就不会出现!而且这不是一个子窗口( WS_EX_LAYERED不适用于子窗口),所以WS_EX_LAYERED标志应该已经工作了。

为什么?

EN

Stack Overflow用户

发布于 2016-01-08 19:26:31

我今天也经历过同样的事情(罗萨里奥,我感觉到你2年前的痛苦!)

我不明白为什么窗户会完全消失。我相信其他人也会因为同样的原因而出现在这个页面上。

因此,我想谈一谈一点。

关键因素似乎是“桌面窗口管理器会话管理器”服务必须运行透明层才能工作。

该EnableAeroPeek注册表值,它与您在查看窗口时是否看到了全屏预览有关(例如。随着alt-TAB或徘徊在任务管理器迷你预览),可以保持关闭,它与透明度的可用性,我已经在多台机器上进行的测试。

类似地,如果该注册表设置是打开的,但DWMSM服务处于关闭状态,则不会为您提供透明度。

罗萨里奥我很抱歉与你自己的问题相矛盾,但我认为这是一个重要的区别!

到目前为止,在进行调用失败(或使窗口不可见)之前,测试Windows 7上透明度可用性的唯一方法似乎是检查正在运行的dwm.exe进程。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19951379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档