Wie erfasse ich mit einem ActiveX -Steuerelement in einem Browserfensterbehälter, wenn der Benutzer die Registerkarte von ActiveX -Steuerung abweist
-
22-09-2019 - |
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?
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.