3

IEブラウザコンテナに配置されるActiveXコントロールがあります。コントロールは、WS_POPUPプロパティとWS_LAYEREDプロパティが有効になっている別のダイアログウィンドウを作成し、SetLayeredWindowAttributes(...)関数を使用して、コントロール上でカラーキーの透明度とアルファブレンディングを実行できるようにします。

WS_LAYEREDプロパティをWS_CHILDプロパティと組み合わせて使用​​することはできないため、ウィンドウの可視性の管理は自動ではありません。オーバーレイウィンドウの表示を変更できるように、ActiveXコントロールが表示されなくなったとき(つまり、ブラウザタブが変更または最小化されたため)を検出できる必要があります。

既存のウィンドウメッセージ(WM_)のいくつかを使用してこの変更を確認しようとしましたが、IEブラウザタブが変更されたときにメッセージが表示されるのを見ていません。これらの可視性の変化が起こっているときにキャプチャするための最良の方法を誰かが知っていますか?

4

1 に答える 1

2

通知が表示されない場合はWM_SHOWWINDOW、ウィンドウが非表示ではなく覆われています。ActiveXコントロールがカバーされたときに通知するWindowsメッセージはありません。ブラウザからの通知を探す必要があります。

または、WS_POPUPウィンドウを使用しないソリューションを考え出します。おそらく、SetLayeredWindowAttributesの暗黙のAlphaBlend動作に依存するのではなく、AlphaBlendを使用して独自のカラーキーイングを行うことができます。

于 2010-02-25T22:24:30.767 に答える