所有
我有一个关于wxDialog Destry()的问题:
假设我创建了一个从wxDialog继承的对话框,如:
wxMyDialog dlg = new wxMyDialog(.....the pararmeter.....)
并且在wxMyDialog里面,有一些wxwidgets指针,比如wxbutton *,wxBoxSizer * ....
我阅读了一些教程,其中大多数没有提到指针内部发生了什么,所以我想,当我调用dlg->Destroy()
时,所有这些指针都可以自动释放吗?有人能告诉我Destroy()背后会发生什么吗?
或
如果没有,我怎样才能手动释放它们?
最佳,
答案 0 :(得分:2)
在对话框中创建窗口小部件指针时,将指针传递给父对话框。父对象保留这些指针,当父对话框被去除时,对这些指针调用delete。所以,你看,每个窗户都清理自己的孩子。
底线:孩子是由父母“拥有”的,你永远不必担心在他们之后整理 - 父母会这样做。
一些特殊情况:
如果将NULL作为父窗口传递给窗口小部件创建者,则意味着窗口小部件属于桌面窗口,而不是应用程序。你不应该为顶级窗口做任何其他事情!
您没有将父窗口指针传递给sizer的构造函数。相反,您将sizer指针传递给父窗口的SetSizer方法 - 具有相同的效果,父窗口拥有sizer并在窗口被销毁时删除它。