使主窗口透明

时间:2015-06-02 00:09:26

标签: c++ windows c++11 transparency wxwidgets

我想要做的是强制主框架窗口背景颜色完全透明。

到目前为止,我发现的唯一第一种方法是SetTransparent(wxByte alpha)函数。但是,这似乎也为子控件设置了透明度 - 我不希望这样。

我一直在尝试多种方法来实现这一点,但没有一种方法可行。此外,关于此的大多数问题似乎已经过时。是否有任何工作方法(对于Windows)允许我设置主框架窗口的完整透明度?

1 个答案:

答案 0 :(得分:0)

@Jerry Coffin向我指出了正确的方向,我为此做了一个工作解决方案。但是我仍然认为混合WinAPI和wxWidgets并不是最好的主意。但是,它确实有效。

wxColour transparentColor = wxColour(wxTransparentColour);

SetBackgroundColour(transparentColor);
SetBackgroundStyle(wxBG_STYLE_CUSTOM);

SetWindowLong(GetHandle(), GWL_EXSTYLE, GetWindowLong(GetHandle(), GWL_EXSTYLE) | WS_EX_LAYERED);
SetLayeredWindowAttributes(GetHandle(), transparentColor.GetRGB(), 255, LWA_ALPHA);
SetLayeredWindowAttributes(GetHandle(), transparentColor.GetRGB(), 255, LWA_COLORKEY);