windows - 使用浏览器窗口容器中的 ActiveX 控件,如何检测用户何时将选项卡从 ActiveX 控件中移开

标签 windows mfc activex visibility layered

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

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

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

最佳答案

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

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

关于windows - 使用浏览器窗口容器中的 ActiveX 控件,如何检测用户何时将选项卡从 ActiveX 控件中移开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338071/

相关文章:

windows - Windows何时发出进程句柄信号?

c# - 将 CString 数组转换为 System::String

c++ - 在 GUI 应用程序(C++ 或 C#)中处理复杂规则

com - 为什么我无法注册我的 COM DLL?

windows - 使用 cygwin 的 Git 存储 https 密码

c# - DrawPath 和 DrawRectangle 的区别

java - 确保在使用 Java 在 Windows 上生成 XML 时使用 Unix 样式的行结尾

c++ - 使用 winapi 或 mfc 从 .NET 应用程序列表控件中获取项目名称

winapi - 是否有 64 位版本的 Microsoft 公共(public)控件 (MSCOMCTL.OCX)?

.net - .NET 中是否有相当于进程外 COM EXE 的功能?