私はいつも

[親側]

メンバ変数
CChildDlg *m_pChild=NULL;

子を呼ぶところ
if(m_pChild == NULL)
{
 m_pChild = new CChildDlg;
 m_pChild->Create(IDD_DIALOG);
}

[子側]

void CChildDlg::OnClose()
{
 m_pChildDlg=NULL;

CDialog::OnClose();
}

void CChildDlg::PostNcDestroy()
{
// TODO : ここに特定なコードを追加するか、もしくは基本クラスを呼び出してください。



CDialog::PostNcDestroy();
}