使用浏览器窗口容器中的ActiveX控件,如何检测用户何时更改tab而不是activex控件

时间:2010-02-25 22:13:20

标签: windows mfc activex visibility layered

我有一个ActiveX控件放在IE浏览器容器中。该控件创建另一个启用了WS_POPUP和WS_LAYERED属性的对话框窗口,以便能够使用SetLayeredWindowAttributes(...)函数在控件之上完成颜色键控透明度和alpha混合。

由于WS_LAYERED属性不能与WS_CHILD属性一起使用,因此窗口可见性的管理不是自动的。我需要能够检测ActiveX控件何时不再可见(即因为浏览器选项卡已更改或最小化),因此我可以更改覆盖窗口的可见性。

我尝试使用一些现有的窗口消息(WM_)来确定此更改,但是在更改IE浏览器选项卡时却没有看到它们。有没有人知道在这些可见性变化发生时捕获的最佳方式?

1 个答案:

答案 0 :(得分:2)

如果您没有看到WM_SHOWWINDOW通知,那么您的窗口将被覆盖而非隐藏。没有Windows消息会告诉您ActiveX控件何时被覆盖。您需要从浏览器中查找通知。

或者提出一个不使用WS_POPUP窗口的解决方案。也许您可以使用AlphaBlend进行自己的颜色键控,而不是依赖于SetLayeredWindowAttributes隐含的AlphaBlend行为。