WS_EX_LAYERED カラーキー - Vista の問題
-
19-09-2019 - |
質問
透明なアプリ ウィンドウを別のプロセスのウィンドウの上に配置します。このウィンドウにはいくつかの子コントロールが含まれています。透明度を選択するためにカラーキーを使用して、WS_EX_LAYERED ウィンドウを作成します。メイン ウィンドウは完全に透明なので、子コントロールのコンテナとしてのみ機能します。
これは問題なく動作します XP および Vista (Aero なし). 。ただし、 エアロ付きビスタ クリックは透明領域を通過しません。私たちは何ができる?
WS_EX_TRANSPARENT の使用は失敗します。当然、独自のコントロールが操作できなくなります。
親ウィンドウ(WS_SHOWWINDOW)を非表示にすることを検討しましたが、それによってすべての子が非表示になることはかなり確信しており、私の知る限り、CLIPCHILDRENとCLIPSIBLINGSを組み合わせてウィンドウを最小サイズにサイズ変更すると、同様の方法で失敗します...
助けていただきありがとうございます。
解決
別のオプションは、窓領域を使用することであり、WS_EX_LAYERED
ない
他のヒント
- WS_EX_LAYERED が処理します グラフィカルな ウィンドウの透明性、 クリックスルーは単なる副作用です それはたまたま古いWindows OSでも動作しました。
- WS_EX_TRANSPARENT は、 ねずみ 透明. 。グラフィックの透明度は 保証されていない この旗と一緒に。(directX アプリケーションの場合と同様に) (GDI 関数を使用して) コントロールを手動で描画し、低レベルのフックを使用してカーソル位置をキャッチする必要があります。
所属していません StackOverflow