1. 程式人生 > >New 建立之後在哪裡Delete

New 建立之後在哪裡Delete

當在一個視窗中生成另外一個視窗 時:
        CTestDlg *pTd ; 標頭檔案定義

CRect rc;
GetWindowRect(&rc); 
CRect rc1;

pTd= new CTestDlg ;
pTd->Create(IDD_123, this);//視窗的ID
pTd->GetWindowRect(&rc1);        

pTd->MoveWindow(rc.left+190, rc.top+18, rc1.Width(), rc1.Height());
        pTd->ShowWindow(TREU):

以上兩句相當於pTd->SetWindowPos(NULL,rc.left+190, rc.top+18, rc1.Width(), rc1.Height(),SWP_HIDEWINDOW);


        //結束時
        delete pTd;
        pTd = NULL;
        這樣的寫法就會出現的Warning: calling DestroyWindow in CDialog::~CDialog --,正確的做法如下:
        //結束時應該
        if(pTd)
        {
            pTd->DestoryWindow();
            pTd = NULL;
        }
        //在後生成的視窗類中加如下程式碼

//新增訊息PostNcDestory 
        void CTestDlg ::PostNcDestroy()
        {
            // TODO: 在此新增專用程式碼和/或呼叫基類
            delete this;//這個一定要
            CDialog::PostNcDestroy();
        }
--------------------- 
作者:爺就是這個範兒 
來源:CSDN 
原文:https://blog.csdn.net/syytem004/article/details/43526055 
版權宣告:本文為博主原創文章,轉載請附上博文連結!