0

解決策を探しましたが、解決策が見つかりませんでした。ネイティブ Win32 では、framedwindow のクライアント領域を透明にすることができます:

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);

backgroundcolor=yellow を設定します

おそらく問題は、rgb(255,255,255) を使用する選択でした。RGB(255,255,0)を使用する場合。できます。

于 2012-07-07T19:08:56.373 に答える