代码之家  ›  专栏  ›  技术社区  ›  richj

调用OnDestroy()后,ActiveX控件(COleControl)会发生什么变化?

  •  1
  • richj  · 技术社区  · 14 年前

    我有一个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.
    

    我的代码没有一个出现在stacktrace中,尽管堆可能在执行过程中的某个早期点被损坏了。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Eugene    14 年前

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

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