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

标签 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 仍在使用时?

最佳答案

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

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

详细答案可以引用(本人)Destroying Window Objects

关于c++ - MFC:删除动态创建的 CWnd 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2973085/

相关文章:

c++ - 两个 COM 组件中重复的 ENUM 条目

c++ - MFC中如何获取可见显示器的宽度?

c++ - afxmem.cpp 中的对象初始化差异

c++ - MFC:子对话行为

C++ std::sort on std::vector<Object> - 错误太多

c++ - 调用表达式中 Callable 参数的完美转发目的?

c++ - 如果忽略返回值,如何发出警告?

c++ - 无法将 .tlb 导入我的 DLL

c++ - 在 Visual C++ 项目中获取链接错误

c# - 没有CLR的MFC中如何访问Winform ActiveX控件