我搜索了一个解决方案,但我找不到任何解决方案。在本机Win32中,可以使framedwindow的clientarea透明:
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窗体不可点击。 我试图将此代码放在paint-event-method“TestFrame :: OnPaint(wxPaintEvent& event)”和方法“TestFrame :: TestFrame(wxWindow * parent,wxWindowID id)”中。
我只需要点击标题栏就可以移动窗口。
提前谢谢。
答案 0 :(得分:0)
将Windows API调用与wxWidgets代码混合在一起可能是一个坏主意。
您是否尝试过wxWindow :: SetTransparent(wxByte alpha)?
http://docs.wxwidgets.org/trunk/classwx_window.html#ac8cf4398cec50ac36634760f45a0656f
答案 1 :(得分: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);
并设置backgroundcolor = yellow
也许问题是你选择使用rgb(255,255,255)。如果您使用RGB(255,255,0)。它有效。