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();
}