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

Insert了一个Dialog的Resource(IDD_DIALOG_MODELANDLESS),关联上新添加的类CNewDlg(继承CDialog)。创建非模态对话框... 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,那么又该如何保证所有的资源都释放了?

请给予指导,谢谢。
按你说的添加之后,关闭非模式对话框的时候,就是点右上角的叉叉后就崩溃了,为什么?
展开
 我来答
魔高丈
2008-11-25 · TA获得超过9506个赞
知道大有可为答主
回答量:2066
采纳率:0%
帮助的人:3468万
展开全部
在你非模式对话框的
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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式