gpt4 book ai didi

visual-c++ - WS_EX_LAYERED、不可见窗口和全新安装的 Windows

转载 作者:行者123 更新时间:2023-12-05 03:15:11 31 4
gpt4 key购买 nike

我想和你分享这篇文章,因为我浪费了很多时间来理解为什么 WS_EX_LAYERED 标志在全新安装的 Windows 上不起作用(我的测试是在 Win7 上,我不知道它是否可以在 Win8 操作系统上复制)。

这是我的代码:

...

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

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

CWnd::FromHandle(myWnd)->SetLayeredWindowAttributes(RGB(0,0,0), 255*0.6, LWA_ALPHA);

运行代码,窗口从未出现!这不是子窗口(WS_EX_LAYERED 不适用于子窗口),因此 WS_EX_LAYERED 标志应该起作用。

为什么?

最佳答案

在花了将近一天的时间寻找解决方案后,我发现目标 PC(托管可执行文件的那台)禁用了 Aero Peek 主题,因为它从未运行过“性能信息和工具”!

因此,恕我直言,打算在其代码中使用 WS_EX_LAYERED 的程序员必须确定 Aero Peek 是否已打开(例如,通过查看 \HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM 注册表并检查 EnableAreoPeek 注册表值),否则某些窗口无法在任何 PC 上正确显示。

希望这能让您节省时间!

关于visual-c++ - WS_EX_LAYERED、不可见窗口和全新安装的 Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19951379/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com