0
如何正確銷燬指向CFindReplaceDialog對象的指針?MFC CFindReplaceDialog破壞
比如我有類:
class CjumpView : public CRichEditView
{
CFindReplceDialog *m_pFRDlg;
// ...
};
CjumpView::CjumpView()
: m_pFRDlg(NULL)
{
}
CjumpView::~CjumpView()
{
if(m_pFRDlg != NULL)
{
m_pFRDlg->DestroyWindow();
delete(m_pFRDlg);
}
}
void CjumpView::OnEditFind()
{
if(m_pFRDlg == NULL)
{
const bool fShowFind = true;
m_pFRDlg = new CFindReplaceDialog();
m_pFRDlg->Create(fShowFind, m_sFind, NULL, NULL, this)
}
}
LRESULT CjumpView::OnFind(WPARAM, LPARAM lParam)
{
LPFINDREPLACE lpFindReplace = reinterpret_cast<LPFINDREPLACE>(lParam);
if(lpFindReplace->Flags & FR_DIALOGTERM)
{
m_pFRDlg->DestroyWindow();
delete(m_pFRDlg);
m_pFRDlg = NULL;
return NULL;
}
lpFindReplace->Flags = 0;
return NULL;
}
在Visual Studio CFindReplaceDialog幫助文章,據說這個類的對象應在堆使用「new」操作符創建。然後創建成員函數應該被調用。 我的「查找」功能對關閉此查找對話框起反應。它調用DestroyWindow()函數,嘗試刪除對話框對象。
但是,當我嘗試在OnFind()或析構函數中調用DestoyWindow()時,我有一個異常「地址訪問衝突...」。
如何銷燬這個對話框並刪除指針?