OnNcDestroy函数是在对话框真正销毁时调用的,适合在这里进行资源的清理和释放操作。你可以在对话框类的消息映射中添加ON_WM_NCDESTROY()宏,然后在对应的OnNcDestroy函数中使用delete来释放m_pFRDlg对象。例如:
BEGIN_MESSAGE_MAP(CMainDlg, CDialogEx)
// 其他消息映射
ON_WM_NCDESTROY()
END_MESSAGE_MAP()
void CMainDlg::OnNcDestroy()
{
if (m_pFRDlg != nullptr)
{
m_pFRDlg->DestroyWindow();
delete m_pFRDlg;
m_pFRDlg = nullptr;
}
CDialogEx::OnNcDestroy();
}
注意:
在MFC中,模态对话框(通过DoModal函数创建)在销毁时会自动调用OnNcDestroy函数。而非模态对话框(通过Create函数创建)则需要手动调用OnNcDestroy函数来释放资源。
在模态对话框销毁时,MFC会自动处理资源的释放,包括调用OnNcDestroy函数。所以你可以在OnNcDestroy函数中释放相关资源。
而在非模态对话框中,你需要手动调用OnNcDestroy函数来释放资源。这可以通过在对话框的消息处理函数中检测WM_NCDESTROY消息,然后调用OnNcDestroy函数来实现。
总结来说,模态对话框销毁时会自动调用OnNcDestroy函数,而非模态对话框需要手动调用OnNcDestroy函数来释放资源。