gpt4 book ai didi

c++ - 调用 OnDestroy() 后 ActiveX 控件 (COleControl) 会发生什么情况?

转载 作者:太空宇宙 更新时间:2023-11-04 12:25:56 31 4
gpt4 key购买 nike

我有一个用 C++ 编写的 ActiveX 控件,它在 Internet Explorer 8 中运行。大多数情况下(大约 90%)当包含该控件的选项卡或浏览器关闭时,会出现如下访问冲突:

The thread 'Win32 Thread' (0x1bf0) has exited with code 0 (0x0).
Unhandled exception at 0x77b3b9fd in iexplore.exe: 0xC0000005: Access violation reading location 0x65007408.

访问冲突发生在调用 OnDestroy() 之后但调用控件的析构函数之前。

调试输出显示:

No symbols are loaded for any call stack frame. The source code cannot be displayed.

堆栈跟踪中没有我的代码,尽管堆可能在执行期间的某个较早时间点已损坏。

ActiveX 控件在调用 OnDestroy() 和控件的析构函数之间接收哪些生命周期事件?

最佳答案

据我了解,ActiveX 没有严格的事件生命周期,它取决于主机端。如果您的控件与某些 AJAX 框架一起使用,例如,在 OnDestroy() 之后可以调用 OnCreate() 而无需调用析构函数。因此,请确保您在 OnDestroy() 处理程序中没有未初始化的操作。

您可以在 ActiveX 控件测试容器中加载控件并使用 Activate/Deactivate,也许会有帮助。

debugging tools for windows 启用应用程序验证程序并确保你的调试器 downloads OS debug symbols .在这种情况下,堆栈跟踪将提供更多信息。

关于c++ - 调用 OnDestroy() 后 ActiveX 控件 (COleControl) 会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2544868/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com