首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

如何能够准确的释放申请的子对话框指针

2012-05-08 
怎么能够准确的释放申请的子对话框指针我在主对话框中添加了一个对话框资源因为我根据需要弹子对话框窗口

怎么能够准确的释放申请的子对话框指针
我在主对话框中添加了一个对话框资源

因为我根据需要弹子对话框窗口出来。

这个倒是好办,但发生要弹子窗口的时候,我就 new 一个我的子对话框类,然后creat,然后show

都是问题是,我不知道怎么才能准确的去释放这个new出来的指针。

我只知道当子对话框点叉叉或是取消什么什么的,总之就是退出的时候,我就一个释放这个指针。

子对话框关闭后,子对话框自己占用的资源是会自己释放掉的把。
我只需要DELETE这个指针就可以了吧。

但是我主对话框怎么得知这个子对话框已经关闭了呢?

还是说我根本不用关心这个问题,子对话框自己关闭的时候,我new出来的子对话框内存区,会自己被操作系统或是MFC框架给释放掉,我都不用DELETE了,但是觉得这样貌似是错的。




[解决办法]
那要看你怎么处理了,如果点右上角的X,默认是隐藏这个对话框,而不会去销毁,如果你想关闭对话框就销毁它,那就可以不需要再手动delete这个子对话框指针,destroywindow,在子对话窗的PostNcStory(忘了具体名字叫啥去了)delete this;
[解决办法]
个是相应子对话框自己的WM_CLOSE消息吗?然后我在这个里面delete this或是destroywindow自己?
delete this只能放到PostNcDestroy里去,可以在WM_CLOSE里调用Destroywindow

对于智能指针,窗口要自己手动去销毁,一样的调用Destroywindow,但是new出来的窗口对象,就是那个指针就不必自己手动释放了,具体信息还是谷歌把,打字太累了。
[解决办法]
When you implement a modeless dialog box, always override the OnCancel member function and call DestroyWindow from within it. Don't call the base class CDialog::OnCancel, because it calls EndDialog, which will make the dialog box invisible but will not destroy it. You should also override PostNcDestroy for modeless dialog boxes in order to delete this, since modeless dialog boxes are usually allocated with new. Modal dialog boxes are usually constructed on the frame and do not need PostNcDestroy cleanup.

热点排行