MFC:删除动态创建的CWnd对象

时间:2010-06-04 10:01:20

标签: c++ mfc

让我们在一个对话框中说,我们动态创建一个可变数量的CWnds ...就像每次用户做某事时创建和注册一个CButton一样/

一些伪代码......

class CMyDlg : public CDialog
{
 vector<CWnd *> windows;

 void onClick()
 {
  CButton *pButton = new CButton(...);
  //do other stuff like position it here
  windows.push_back(pButton);
 }
}

需要明确删除它们还是MFC会这样做?如果必须的话,它是否会像正常一样在析构函数中,或者是否有任何特殊的东西可以避免破坏MFC ...确保在HWND仍在使用时我不会删除对象?

1 个答案:

答案 0 :(得分:3)

CButton *pButton = new CButton(...);

这些是C ++对象,需要显式删除。 (主框架窗口和视图是自毁的)。

您可以参考详细的答案(由我)Destroying Window Objects