1. 程式人生 > >視窗關閉後釋放記憶體的方法

視窗關閉後釋放記憶體的方法

1、在dlg類中手動增加解構函式,在解構函式中釋放記憶體。

(1)在標頭檔案的類宣告中,新增解構函式宣告

class CTestDlg : public CDialog

{

public:

virtual ~CTestDlg();//解構函式宣告,virtual可寫可不寫。

}

(2)在cpp檔案中新增西溝函式定義

CTestDlg::~CTestDlg()

{

//add your code

}

2、新增訊息響應函OnDestroy()函式(訊息WM_DESTROY的響應函式)

視窗關閉時,程式會首先丟擲訊息WM_DESTROY,所以可以直接在OnDestroy()中釋放記憶體。

另,從CDialog的原始碼.它也只是判斷了一下控制代碼,然後呼叫DestoryWindow傳送WM_DESTROY訊息,所以只要你在訊息響應函式OnDestroy裡處理就可以了.

CDialog::~CDialog()
{
if (m_hWnd != NULL)
{
TRACE(traceAppMsg, 0, "Warning: calling DestroyWindow in CDialog::~CDialog --\n");
TRACE(traceAppMsg, 0, "\tOnDestroy or PostNcDestroy in derived class will not be called.\n");
DestroyWindow();
}
}

補充:

虛解構函式:

1、程式會先呼叫派生類的解構函式,再呼叫基類的解構函式。

2、如果基類的解構函式宣告為虛擬函式,由該基類所派生的所有派生類的解構函式都自動成為虛擬函式(即使派生類的解構函式與基類的解構函式名字不相同)