3

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

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

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

4

1 回答 1

2

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

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

于 2010-02-25T22:24:30.767 回答