1. 程式人生 > >MFC使用Create建立建立窗體後釋放記憶體的方法

MFC使用Create建立建立窗體後釋放記憶體的方法

當在一個視窗中生成另外一個視窗 時:
        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();
        }