0

我已经寻找解决方案,但我没有找到任何解决方案。在本机 Win32 中,可以使框架窗口的客户区透明:

HWND hwnd = (HWND)GetHandle();
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED|WS_EX_TOOLWINDOW);
SetLayeredWindowAttributes(hwnd, RGB(255,255,255), 0, LWA_COLORKEY);
Refresh();

这也适用于 wxwidgets。它也使客户区透明。但现在 windows 窗体不可点击。我试图将此代码放在绘画事件方法“TestFrame::OnPaint(wxPaintEvent& event)”和方法“TestFrame::TestFrame(wxWindow* parent,wxWindowID id)”中。

我只需要使标题栏可点击即可移动窗口。

先感谢您。

4

2 回答 2

0

将 Windows API 调用与 wxWidgets 代码混合使用可能是个坏主意。

你试过 wxWindow::SetTransparent (wxByte alpha) 吗?

http://docs.wxwidgets.org/trunk/classwx_window.html#ac8cf4398cec50ac36634760f45a0656f

于 2012-07-07T18:23:46.830 回答
0

尝试

HWND hwnd = (HWND)GetHandle();
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED|WS_EX_TOOLWINDOW);
SetLayeredWindowAttributes(hwnd, RGB(255,255,0), 0, LWA_COLORKEY);

并设置背景颜色=黄色

也许问题是您选择使用 rgb(255,255,255)。如果您使用 RGB(255,255,0)。有用。

于 2012-07-07T19:08:56.373 回答