視窗關閉後釋放記憶體的方法
阿新 • • 發佈:2019-01-01
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裡處理就可以了.
{
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、如果基類的解構函式宣告為虛擬函式,由該基類所派生的所有派生類的解構函式都自動成為虛擬函式(即使派生類的解構函式與基類的解構函式名字不相同)