透明hwnd窗口

Transparent hwnd window

本文关键字:窗口 hwnd 透明      更新时间:2023-10-16

是否可以创建一个"透明"的hwnd窗口?我的意思是那个窗口没有背景或边框,只有文本可见。比如我有一个主窗口背景我在背景上写了一些东西(或者如果我想通过窗口在某个区域添加文本)我想把它设为可点击选项,创建那种不可见但仍可点击的窗口。

在Windows 2000及以后的版本中,你可以创建一个WS_EX_LAYERED样式的顶级窗口(在Windows 8及以后的版本中,子窗口现在也可以使用WS_EX_LAYERED样式),然后使用SetLayeredWindowAttributes()UpdateLayeredWindow()使窗口透明。

创建纯色背景色,然后将该颜色设置为窗口的透明色。窗口上没有使用这种颜色的任何东西都不会是透明的。操作系统会为你处理其余的。

有关详细信息,请参阅MSDN:

    分层窗口
  • 使用分层窗口
  • SetLayeredWindowAttributes()
  • UpdateLayeredWindow()

从您的hwnd标记,我假设您正在使用c++或至少可以访问Win32 API,有很多资源可以帮助您开始。这个概念叫做Window Compositing

透明的win32窗口和文本

快速和脏窗口透明度

如果你使用WPF而不是c++,这里有一个链接:WPF中的透明窗口

首先设置样式以启用图层:

SetWindowLong(itsec->first, GWL_EXSTYLE, GetWindowLong(itsec->first, GWL_EXSTYLE) & WS_EX_LAYERED);

然后指出你是否希望透明度为alpha:

SetLayeredWindowAttributes(itsec->first, RGB(154,255,214), 200, LWA_ALPHA);