wxDialog Destroy函数如何工作

时间:2013-04-24 16:22:24

标签: wxwidgets

所有

我有一个关于wxDialog Destry()的问题:

假设我创建了一个从wxDialog继承的对话框,如:

 wxMyDialog dlg = new wxMyDialog(.....the pararmeter.....)

并且在wxMyDialog里面,有一些wxwidgets指针,比如wxbutton *,wxBoxSizer * ....

我阅读了一些教程,其中大多数没有提到指针内部发生了什么,所以我想,当我调用dlg->Destroy()时,所有这些指针都可以自动释放吗?有人能告诉我Destroy()背后会发生什么吗?

如果没有,我怎样才能手动释放它们?

最佳,

1 个答案:

答案 0 :(得分:2)

在对话框中创建窗口小部件指针时,将指针传递给父对话框。父对象保留这些指针,当父对话框被去除时,对这些指针调用delete。所以,你看,每个窗户都清理自己的孩子。

底线:孩子是由父母“拥有”的,你永远不必担心在他们之后整理 - 父母会这样做。

一些特殊情况:

  1. 如果将NULL作为父窗口传递给窗口小部件创建者,则意味着窗口小部件属于桌面窗口,而不是应用程序。你不应该为顶级窗口做任何其他事情!

  2. 您没有将父窗口指针传递给sizer的构造函数。相反,您将sizer指针传递给父窗口的SetSizer方法 - 具有相同的效果,父窗口拥有sizer并在窗口被销毁时删除它。