Wie erfasse ich mit einem ActiveX -Steuerelement in einem Browserfensterbehälter, wenn der Benutzer die Registerkarte von ActiveX -Steuerung abweist

StackOverflow https://stackoverflow.com/questions/2338071

Frage

Ich habe ein ActiveX -Steuerelement, das in einen IE -Browser -Behälter platziert wird. Das Steuerelement erstellt ein weiteres Dialogfenster, in dem die Eigenschaften von WS_POPUP und WS_Layered aktiviert sind, um die Funktion mit setlayeredWindowattributes (...) zu verwenden, um die farbschlüsselte Transparenz und die Alpha -Mischung oben auf dem Steuerelement zu erfüllen.

Da die Eigenschaft WS_Layered nicht in Verbindung mit der WS_Child -Eigenschaft verwendet werden kann, ist die Verwaltung der Sichtbarkeit der Fenster nicht automatisch. Ich muss in der Lage sein zu erkennen, wann die ActiveX -Steuerung nicht mehr sichtbar ist (dh, weil die Registerkarte Browser geändert oder minimiert wurde), damit ich die Sichtbarkeit des Overlay -Fensters ändern kann.

Ich habe versucht, einige der vorhandenen Fenstermeldungen (WM_) zu verwenden, um diese Änderung zu bestimmen, habe sie jedoch nicht feuert, wenn der IE -Browser -Registerkarte geändert wird. Kennt jemand den besten Weg, um zu erfassen, wenn diese Sichtbarkeitsänderungen stattfinden?

War es hilfreich?

Lösung

Wenn Sie keine sehen WM_SHOWWINDOW Benachrichtigung, dann wird Ihr Fenster eher abgedeckt als versteckt. Es gibt keine Windows -Nachricht, die Ihnen angibt, wann Ihr ActiveX -Steuerelement abgedeckt wurde. Sie müssen nach Benachrichtigungen aus dem Browser suchen.

Oder erstellen Sie eine Lösung, bei der kein WS_POPUP -Fenster verwendet wird. Vielleicht könntest du benutzen Alphablend Um Ihre eigene Farbschlüsselung durchzuführen, anstatt sich auf das implizite Alphablend -Verhalten von SetlayeredWindowattributes zu verlassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top