【问题标题】:MFC: Deleting dynamically created CWnd objectsMFC:删除动态创建的 CWnd 对象
【发布时间】:2010-06-04 10:01:19
【问题描述】:

假设在一个对话框中,我们动态地创建一个可变数量的 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 仍在使用时不删除对象?

【问题讨论】:

    标签: c++ mfc


    【解决方案1】:
    CButton *pButton = new CButton(...);
    

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

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

    【讨论】:

    • 但是主机是如何自毁的?你在App::ExitInstance() 中有这个delete pFrame;
    猜你喜欢
    • 2017-08-18
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多