Avec un contrôle ActiveX dans un conteneur de fenêtre du navigateur, comment puis-je détecter lorsque l'utilisateur change l'onglet loin de contrôle activex

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

Question

I ai un contrôle ActiveX qui obtient placé dans un conteneur de navigateur IE. La commande crée une autre fenêtre de dialogue qui a WS_POPUP et les propriétés WS_LAYERED activés pour pouvoir utiliser la fonction de SetLayeredWindowAttributes (...) pour atteindre la couleur clé transparence et de mélange alpha au-dessus de la commande.

Parce que la propriété WS_LAYERED ne peut pas être utilisé en conjonction avec la propriété WS_CHILD la gestion de la visibilité de la fenêtre est pas automatique. Je dois être en mesure de détecter le moment où le contrôle ActiveX n'est plus visible (par exemple parce que l'onglet du navigateur a été modifié ou réduit au minimum) afin que je puisse changer la visibilité de la fenêtre d'incrustation.

Je l'ai essayé d'utiliser quelques-uns des messages de fenêtre existants (WM_) pour déterminer ce changement, mais ne les ai pas vu le feu quand l'onglet du navigateur IE est modifié. Est-ce que quelqu'un sait la meilleure façon de capturer lorsque ces changements de visibilité se produisent?

Était-ce utile?

La solution

Si vous ne voyez pas une notification WM_SHOWWINDOW, votre fenêtre est recouverte plutôt que caché. Il n'y a pas de message Windows qui vous dira quand votre contrôle ActiveX a été recouvert. Vous devez rechercher des notifications à partir du navigateur.

Ou trouver une solution qui n'utilise pas une fenêtre WS_POPUP. Peut-être que vous pouvez utiliser AlphaBlend pour faire votre propre couleur saisie plutôt que de compter sur le comportement AlphaBlend implicite de SetLayeredWindowAttributes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top