我有一个窗口,然后使用以下代码创建一个子窗口:
HWND childHwnd = CreateWindowExA(WS_EX_LAYERED, "Test", "Test", WS_CHILD, 0, 0, 500, 500, mainHwnd, NULL, instance, NULL);
创建后,我可以使用以下方法控制不透明度:
static COLORREF color = RGB(255, 0, 0);
SetLayeredWindowAttributes(childHwnd, color, 127, LWA_ALPHA);
它工作正常,但我还必须支持Windows 7,MSDN说:
Windows 8:顶层窗口和子窗口支持WS_EX_LAYERED样式。以前的Windows版本仅对顶层窗口支持WS_EX_LAYERED。
我在虚拟机中安装了Windows 7,但遗憾的是它不起作用。有什么变通办法可以在Windows 7的子窗口上实现同样的不透明度控制?
我还尝试使它成为一个独立的窗口,只需跟随父窗口的位置,但当窗口快速移动时,用户体验就不那么好了。
1条答案
按热度按时间brccelvz1#
根据文档:使用分层窗口
为了使用分层子窗口,应用程序必须在清单中声明自己支持Windows 8。
我建议你可以参考以下帖子:https://stackoverflow.com/a/42570249/11872808
在win7中,您可以尝试使用SetWindowRgn function
我建议你可以参考以下帖子:Creating a Transparent Child window on top of non-transparent Parent Window (win32)