3

透明なアプリ ウィンドウを別のプロセスのウィンドウの上に配置します。ウィンドウには子コントロールがいくつか含まれています。選択的な透過性のためにカラーキーを使用して、WS_EX_LAYERED ウィンドウを作成します。メイン ウィンドウは完全に透過的であるため、子コントロールのコンテナーとしてのみ機能します。

これは、Aero を使用しない XP および Vista で正常に動作します。ただし、Aero を使用する Vista では、クリックは透明領域を通過しません。私たちは何ができる?

WS_EX_TRANSPARENT を使用すると失敗します。もちろん、独自のコントロールが機能しなくなります。

親ウィンドウ (WS_SHOWWINDOW) を非表示にすることを検討しましたが、それがすべての子を非表示にすることはかなり確信しており、CLIPCHILDREN と CLIPSIBLINGS の組み合わせでウィンドウのサイズを最小サイズに変更すると、同様の方法で失敗します...

助けてくれてありがとう。

4

2 に答える 2

2

別のオプションは、ウィンドウ領域を使用することです。WS_EX_LAYERED

于 2009-12-11T13:26:41.500 に答える
0
  • WS_EX_LAYERED は、グラフィカルなウィンドウの透明度を処理するものです。クリックスルーは、古い Windows OS でたまたま機能した副作用にすぎません。
  • WS_EX_TRANSPARENT は、マウスを 透明にするものです。このフラグでは、グラフィックの透過性は保証されません。コントロールを (GDI 関数を使用して) (directX アプリケーションのように) 手動で描画し、低レベルのフックを使用してカーソル位置をキャッチする必要があります。
于 2011-05-02T23:31:12.597 に答える