当关闭一个窗口时触发了什么事件?
本人在调试时发现当关闭一个窗口时并没有触发窗口的OnDestroy事件,窗口只是隐藏而没有释放内存,这样假如一个软件的窗口比较多时随着多个窗口的不断打开,应用程序占用的内存不断增长。我本想在窗口的OnDestroy事件中delete掉窗口类的对象,但OnDestroy根本就没有触发,怎么办? 问题点数:20、回复次数:8Top
1 楼vcmute(BCare4 H1Rest Good9!)回复于 2006-03-04 09:50:37 得分 10
OnClose
没有调用Destroy可能是因为有些线程没退出Top
2 楼cpio(备注)回复于 2006-03-04 09:54:17 得分 5
如果是对话框,关闭先调用的是OnCancel
OnDestroy是在销毁的时候调用
你是不是这样用的:CXXXDialog *pDlg = new CXXXDialog();
pDlg->DoModal();
如果这样,当然没有OnDestroy事件了,因为你这对象没有销毁
它会在你delete pDlg的时候销毁Top
3 楼JFlyer(一万年太久,只争朝夕)回复于 2006-03-04 10:08:38 得分 0
我是:CXXXDialog *pDlg = new CXXXDialog();
pDlg->Create(IDD_DIALOG_XXX,.......);Top
4 楼JFlyer(一万年太久,只争朝夕)回复于 2006-03-04 10:15:16 得分 0
是不是像上面这种创建对话框的方式最好在对话框的Close事件中:DestroyWindow();
delete pDlg;pDlg=NULL; ???Top
5 楼wanglh100(悍卫钓鱼岛)回复于 2006-03-04 10:41:26 得分 1
一楼正解,OnClose
Top
6 楼syy64(太平洋)回复于 2006-03-04 12:55:56 得分 1
有很多消息.Top
7 楼nodefault(永不言败)回复于 2006-03-04 15:12:14 得分 1
这样不可可以吗?
CXXXDialog pDlg ;
if(pDlg.DoModal()==IDOK)
{
}
如果用指针,记住new的东西要delete,并且指针要设为NULL,才能完全释放。
Top
8 楼toumao(偷猫)回复于 2006-03-04 16:08:18 得分 2
记住new的东西要delete
并且指针要设为NULL
但是,设为NULL并不是为了完全释放。
Top




