在一个按钮的消息响应函数中定义了一个对话框(CMydlg *pDlg = new CMyDlg)指针,然后用Create()创建了一个非模态对话框,我需要在按钮函数退出的时候delete这个指针吗?

解决方案 »

  1.   

    按钮函数运行结束后对话框关闭了吗?
    如果已经关闭了,就delete
    没有的话,等关闭时delete
      

  2.   

    在哪里delete呢void CMyDialog::OnButtonTest()
    {
       CMyDlg *pDlg = new CMyDlg;
       pDlg->Create(...);
       ...........
       delete pDlg;//如果在这里调用那么我就看不到对话框上的内容了,一闪就没有了
    }
      

  3.   

    你在点击对话框的确定或取消时 delete
      

  4.   

    看你这个对话框的生命周期了。
    在这里显然点击按钮是为了呼出对话框,如果点击完了就delete,那么弹出的对话框就被释放了,当然就没了。所以你什么时候要销毁这个对话框,什么时候再delete。
      

  5.   

    可是除了在这里以外,别的地方没有办法delete啊,这是个局部变量。
      

  6.   

    你可以定义个全局的CMyDlg *pDlg 
    不就可以任意在那里删除了
      

  7.   

    在对话框退出时销毁自己~
    在CMyDlg 类里面
    void CMyDlg ::OnOK() 
    {
    CDialog::OnOK();
    CDialog::DestroyWindow();
    }void CMyDlg ::OnCancel() 
    {
    CDialog::OnCancel();
    CDialog::DestroyWindow();
    }void CMyDlg ::OnDestroy() 
    {
    CDialog::OnDestroy();
    delete this;
    }