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,那么又该如何保证所有的资源都释放了?
请给予指导,谢谢。
按你说的添加之后,关闭非模式对话框的时候,就是点右上角的叉叉后就崩溃了,为什么? 展开
关联上新添加的类CNewDlg(继承CDialog)。
创建非模态对话框如下:(点击主对话框上的一个Button)
void CModelAndModelessDlg::OnBtnModeless()
{
CNewDlg *pModelessDlg = new CNewDlg;
pModelessDlg->Create(IDD_DIALOG_MODELANDLESS);
pModelessDlg->ShowWindow(SW_NORMAL);
}
问题:
1、什么时候delete掉这里分配的资源?
2、如果允许多次按下这个Button,那么又该如何保证所有的资源都释放了?
请给予指导,谢谢。
按你说的添加之后,关闭非模式对话框的时候,就是点右上角的叉叉后就崩溃了,为什么? 展开
1个回答
展开全部
在你非模式对话框的
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;
}
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询