VC6.0下非模态对话框 关于对话框资源的释放

来源:百度知道 编辑:UC知道 时间:2024/05/25 17:50:59
Insert了一个Dialog的Resource(IDD_DIALOG_MODELANDLESS),

关联上新添加的类CNewDlg(继承CDialog)。

创建非模态对话框如下:(点击主对话框上的一个Button)

void CModelAndModelessDlg::OnBtnModeless()
{

CNewDlg *pModelessDlg = new CNewDlg;

pModelessDlg->Create(IDD_DIALOG_MODELANDLESS);

pModelessDlg->ShowWindow(SW_NORMAL);
}

问题:

1、什么时候delete掉这里分配的资源?

2、如果允许多次按下这个Button,那么又该如何保证所有的资源都释放了?

请给予指导,谢谢。
按你说的添加之后,关闭非模式对话框的时候,就是点右上角的叉叉后就崩溃了,为什么?

在你非模式对话框的
OnOK() 和 OnCancel()(没有的话就重载这两个函数)
加入:
DestroyWindow();

然后映射WM_NCDESTROY,释放对象
void CYourDlg::OnNcDestroy()
{
CDialog::OnNcDestroy();
delete this;
}

补充:
注意DestroyWindow的位置!

void CNewDlg::OnOK()
{
CDialog::OnOK();
DestroyWindow();
}

void CNewDlg::OnCancel()
{
CDialog::OnCancel();
DestroyWindow();
}

void CNewDlg::OnNcDestroy()
{
CDialog::OnNcDestroy();
delete this;
}