在SDI程序中调用Dlg.DoModal() 产生了一模式对话框[有父窗口],然后输入一些数据,主窗口得到这些数据,而且我还在这个对话框类中加了一些函数,当我关闭这个模式对话框后,我在主窗口的程序中得到这些数据,同时还要调用对话框类中的一些函数,请问什么时候delete dlg呢?如果不delete,但是又new dlg,会出现什么后果,我现在的程序就没有delete,但是运行好像是正常的,但是我担心会不稳定,请问如何解决?是不是不应该在模式对话框类中加函数。

解决方案 »

  1.   

    model对话框自己关闭,不要你delete。独占。
      

  2.   

    Cmydlg dlg;
    dlg.domodal();
    m_a = dlg.m_b;表示模式对话框关闭以后,还可以读取dlg.m_b,即dlg对象还是存在的
    如果不删除,我又一次调用Cmydlg dlg;dlg.domodal();时是不是又产生了一个对象,这样会不会又什么问题?
      

  3.   

    不会有什么问题,dlg是对象,和窗口无关(当然,有些数据还是关联的),domodal是创建窗口,是显示问题,完毕后,窗口销毁,dlg对象还是存在,只是没有窗口了,所以重新dodomal也是可以的,其中的数据(成员变量)取决于当前数据(相当于初始化了)你没有定义指针,就不用new,也不用delete了,系统会帮你清理内存的,不用担心