透明的hwnd窗口

时间:2014-05-10 19:12:17

标签: c++ winapi

是否可以创建一个“透明”的hwnd窗口?我的意思是那个窗口没有背景或边框,但只有文字是可见的...就像我有一个主窗口背景,我在背景上写了一些东西(或者我只是想添加文字)在一些区域通过窗口)我想让它成为一个可点击的选项,以创建那种看不见但仍然可点击的窗口。

3 个答案:

答案 0 :(得分:3)

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

创建纯色背景,然后将该颜色设置为窗口的透明色。窗口上没有使用该颜色的任何内容都不会透明。操作系统将为您处理其余部分。

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

答案 1 :(得分:1)

在您的hwnd标记中,我假设您正在使用C ++或至少可以访问Win32 API,有很多资源可以帮助您入门。该概念称为Window Compositing

Transparent win32 window and text

Quick and Dirty Window Transparency

如果你使用WPF而不是C ++,这里有一个链接: Transparent Windows in WPF

答案 2 :(得分:0)

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

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

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

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