分享

解决 Warning: calling DestroyWindow in CWnd::~CWnd OnDestroy or PostNcDestroy in derived class will not be called

 猎狐肥 2020-12-18
      出现上面Warning,原因是,调用窗口类析构的时候,窗口对象还没有销毁。具体表现在,当在一个窗口中生成另外一个窗口CTestDlg 时:
       
CTestDlg *pDlg = new CTestDlg();
pDlg->Create(IDD_DIALOG_TEST,this);
pDlg->ShowWindow(TREU):

// 结束时
delete pDlg;
pDlg = NULL;

  这样的写法就会出现上面的warning,正确的做法如下:
// 结束时
if(pDlg)
{
  pDlg->DestoryWindow();
  pDlg = NULL;
}

//在后生成的窗口类中加如下代码
void CTestDlg::PostNcDestroy()
{
    // TODO: 在此添加专用代码和/或调用基类
    delete this;//这个一定要
    CDialog::PostNcDestroy();
}


       
posted on 2013-10-23 10:37 阅读(3198) 评论(0)  编辑 收藏 引用 所属分类: vc

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多