我正在使用 MFC 为网页编写 ActiveX 控件。当资源管理器关闭时,需要在控件的主窗口被销毁之前释放一些资源。我做了一些搜索,发现一个被覆盖的 COleControl::OnClose(DWORD dwSaveOption) 函数应该是一个很好的地方来完成发布工作。所以我对我的代码做了以下更改:

  • 将以下行添加到头文件中我的控件声明中:

    虚拟无效 OnClose(DWORD dwSaveOption);
  • 将以下行添加到我的控件的实现文件中:

    void MyControl::OnClose(DWORD dwSaveOption)
    {
    //一些做相关工作的代码
    COleControl::OnClose(dwSaveOption);
    }

  • 我认为在关闭资源管理器时,应该执行 MyControl::OnClose,但事实并非如此。我是否错过了正确覆盖该函数的任何内容,或者 OnClose 函数不是执行此操作的正确位置?

    最佳答案

    我个人覆盖 COleControl::OnDestroy() 进行清理。您是否缺少某种事件接收器注册调用来启用关闭?还是调度 map 条目?

    关于c++ - COleControl 的 OnClose 被覆盖,但从未被触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13640291/

    10-11 14:37