请老大们解疑解决方法

请老大们解疑
对话框资源已有,在菜单拦上定义一个按扭,点击按扭显示对话框,头文件已包括对话框类,发觉只要在这个函数下加入对话框的操作就抱非法操作,这是怎么回事,请老大解疑,谢谢


void   CDialogBoxView::OnDlgbox()
{
//   TODO:   在此添加命令处理程序代码
CTestDlg   dlg;
dlg.DoModal();


CWnd*   ptr   =   dlg.GetParent();   //加上点击OK就是非法操作,不光是这个操作,其他也是报错,不明白

}


------解决方案--------------------
对话框在DoModal后已经无效了。GetParent会导致断言。
------解决方案--------------------
dlg.DoModal(); 就弹出一个 modal 窗口, 等到关闭了这个窗口才会到下一句 CWnd* ptr = dlg.GetParent(); 窗口关闭了再 GetParent() 就有问题了.
------解决方案--------------------
DoModal后,对话框(窗口)已经被Destroy了,你想一下GetParent(hDlg)就变成了GetParent(NULL)
------解决方案--------------------
仅仅是对话框窗口被destroy了,你要把窗口destroy和窗口对象在内存中释放区分开.
------解决方案--------------------
dlg.DoModal(); 就弹出一个 modal 窗口, 等到关闭了这个窗口才会到下一句 CWnd* ptr = dlg.GetParent(); 窗口关闭了再 GetParent() 就有问题了.
=========
right
------解决方案--------------------

GetParent()里面的实现有Assert(m_hWnd);
说明对话框已经空指针了
------解决方案--------------------
dlg.DoModal();之后窗口句柄就非法了NULL,所以获取父亲肯定错误啊