我用MFC建了个ACTIVEX控件CActicexggggCtrl,嵌入网页时只有刷新或关闭浏览器的时候才调用了控件的析构函数CActicexggggCtrl::~CActicexggggCtrl(), 可是当输入新地址转到其他新网页时,不会调用析构函数。我想当转到其他新网页时,也调用析构函数,或在这时候知道产生了什么消息,可以自己调用函数重新初始变量?

解决方案 »

  1.   

    http://sx8848.sx.zj.cn/acticexgggg.rar 这里是程序代码 里面有个HTM文件,打开后会有一个对话框。只有刷新的时候才会自动销毁久的对话框,再产生新的。当在地址栏输入其他网址转到其他网页时,却没有销毁控件 ,这时会有多个对话框留在那里。
      

  2.   

    1、

    嵌入网页时只有刷新或关闭浏览器的时候才调用了控件的析构函数CActicexggggCtrl::~CActicexggggCtrl(), 

    析构函数不能显式调用。2、
    在适当的时候调用:
    m_dialog1.DestroyWindow();
    可以销毁对话框。
      

  3.   

    TO: xxrl(孔曰成仁,孟曰取E) 重载OnDestory函数没用 ,我在里面void CActicexggggCtrl::OnDestroy() 
    {
    m_dialog1.ShowWindow(SW_HIDE);
    COleControl::OnDestroy();

    // TODO: Add your message handler code here
    //SW_HIDE
    }根本不起作用,对话框还是显示在那里
      

  4.   

    TO: sinall() ( ) 
    1:你误解了我的意思,我不是说显式调用控件的析构函数,我是说当“IE转到其它网页”的时候应该也调用控件的析构函数函数,可是没有调用。证明这时候控件还在保留在内存里,这样在内存里就保留了一个无用的控件内存块,只有关闭IE进程时才能释放以前访问过网页里的控件。2:问题是我根本找不到“在适当的时候”调用m_dialog1.DestroyWindow();当“IE转到其它网页”时根本就没有通知嵌在里面的控件任何消息
      

  5.   

    再开个接口,把自己关掉行不?
    CActicexggggCtrl::CloseWindow() 
    {
         ::EndDialog(...);
         ....
    }...
    m_dialog1.CloseWindow
      

  6.   

    TO yzx0023(无聊客): 我不是问关闭对话框的问题,是在问当“IE转到其它网页”的时候,内嵌的ACTIVEX控件没有销毁的问题,对话框只是用来测试用的。
      

  7.   

    在此给楼主两个方法:
    1、基于互斥体的方法
    HANDLE hObject = CreateMutex(NULL,FALSE,"SingleInstance");
    if(GetLastError() == ERROR_ALREADY_EXISTS)
    {
    CloseHandle(hObject);
    }
    else
    {
    m_dialog1.Create(MyDialog::IDD);
    m_dialog1.ShowWindow(SW_NORMAL);
    }2、基于静态变量的方法
    class CActicexggggCtrl : public COleControl
    {
    static MyDialog* m_pCurrentDlg;
    }// ActicexggggCtl.cpp
    MyDialog* CActicexggggCtrl::m_pCurrentDlg=NULL;CActicexggggCtrl::CActicexggggCtrl()
    {
    InitializeIIDs(&IID_DActicexgggg, &IID_DActicexggggEvents); // TODO: Initialize your control's instance data here.
    if(m_pCurrentDlg!=NULL)
    m_pCurrentDlg->DestroyWindow();
    m_pCurrentDlg=&this->m_dialog1;
    }
      

  8.   

    sinall() 你理解错误我的意思了。
    我不是问关闭对话框的问题,是在问当“IE转到其它网页”的时候,内嵌的ACTIVEX控件“没有销毁”的问题,对话框只是用来测试用的。只是为了证明在“IE转到其它网页”的时候,控件还是保留在内存里,这样在内存里就保留了一个无用的控件内存块。
      

  9.   

    楼主玩笑开大了,
    1、我先打开你的网页,对话框显示
    2、然后输入www.baidu.com 然后对话框消失,百度显示。
    3、点击后退——》1
    4、点击前进——》2
      

  10.   

    怎么可能呢?难道是我的IE出问题了?你的IE是什么版本的?
      

  11.   

    我的IE也是这个版本 系统是2000 SP3 用的是VC6 SP6  方便的话能用QQ交流么?我的QQ是4886611