关于非模态对话框打开的有关问题

关于非模态对话框打开的问题?
在一单文档程序中加入一非模态对话框
1,在视图类头文件中加入   CModelessDlg     *dlg
2,   在视图类头文件中初始化   dlg=NULL
3,     在视图类源文件中添加如下代码:
dlg=new   CModelessDlg   ;
dlg.create(IDD_DIALOG1,this);
dlg.ShowWindow(SW_SHOW);

4,     在非模态对话框的源文件中添加   #include "CMyView.h "和#include“CMyDoc.h”
        CModelessDlg     ::OnOK()
      {
                        DestroyWindow();
                      ((CTESTView*)GetParent())-> dlg=NULL;
      }
    CModelessDlg     ::OnCancel()
      {
                        DestroyWindow();
      }
    CModelessDlg     ::PostNcDestroy()
      {
                      delete   this;
      }
     
      我遇到的问题是  
  1。     在CModelessDlg     ::OnOK()
              {
                        DestroyWindow();
                      ((CTESTView*)GetParent())-> dlg=NULL;
              }
中加入((CTESTView*)GetParent())-> dlg=NULL;后程序出错,这是为什么,是我引用的有问题吗?
2。我想在程序中加上判断,以防止多次打开非模态对话框,形式如下:
if(!dlg)
{             dlg=new   CModelessDlg   ;
            dlg.create(IDD_DIALOG1,this);
            dlg.ShowWindow(SW_SHOW);
}
else
        dlg.SetActiveWindow();
为什么当打开一个对话框并关闭它后,再次打开时程序崩溃了?问题很菜,但诚心请教。




------解决方案--------------------
DestroyWindow后Window就没有Parent了,所以把那两句换个位置试试