0

ダイアログのロジックに従って透明領域が変化するという意味で、部分的に透明にしたい BHO に CDHTMLDialog があります。(SetLayeredWindowAttributes を使用して) 視覚的に透明になるようにしましたが、この領域を完全に透明にすることが重要です。そうしないと、透明領域をクリックしたときに、ダイアログの透明部分の下にある IE ウィンドウにクリックが届かないためです。ダイアログのアクティブな部分のサイズに応じてダイアログのサイズを常に変更することで、これを一時的に修正しますが、これを永遠に維持することはできません...

解決策は、Windowsが「リージョン」と呼ぶものと関係があると思います(http://msdn.microsoft.com/en-us/library/dd162915%28VS.85%29.aspx)が、どうすればよいか正確にはわかりません彼らと一緒に働くために。誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

2

私はあなたがあなたの窓の一部を透明にしたいとは思わない、あなたがしたいことは(あなたが言うように)窓の領域を設定することである(私は思う)。SetWindowRgn()のMSDNを読んでください-基本的に、特定の形状の表面を記述し、最終的にはパーツを切り取った、タイプHRGN(MFC、CRgnを使用している場合)のGDIオブジェクトを定義します。次に、Windowsは、ウィンドウに設定した「領域」のみを、使用するウィンドウの一部と見なします。基本的に、それはあなたが非長方形の窓を作る方法です。「領域」はウィンドウの「透明な」部分ではなく、ある意味でウィンドウの領域を破棄する方法です。

于 2009-09-03T14:06:28.570 に答える
0

ここで、ウィンドウ全体を透明にしてクリックスルーにする方法を見つけました。

http://www.codeproject.com/KB/wtl/transparent.aspx

しかし、ウィンドウの透明部分 (HTML/CSS 定義によって透明) だけをクリックスルーにしたい場合には役に立ちません...

更新: どうやら、クリックは透明部分を通過するはずです ( http://jalaj.net/2007/02/05/form-with-a-hole/を参照) が、私の CDHTMLDialog ではそうではありません。私の最善の推測は、BHO のサブウィンドウが私のクリックをキャッチすることですが、あまり意味がないと思います...

于 2009-09-02T16:23:28.580 に答える