创建非模态对话框时遇到的小疑点

创建非模态对话框时遇到的小问题
我创建对话框的步骤:
1、新建一个单文档应用程序
2、添加对话框资源
3、建立一个与对话框资源相关联的类
4、添加菜单项
5、添加菜单项的命令响应函数,例如OnTestDlg()
此时遇到的小问题:
在响应函数中添加:
dlg.Create(IDD_DIALOG1,this);
dlg.ShowWindow(SW_SHOW);
dlg已声明为视类的成员变量。
运行,第一次能够显示对话框,第二次就有Debug Assertion Failed!
请问这是什么原因?


后来又尝试另外一种方法:
pDlg=new CTestDlg;
pDlg->Create(IDD_DIALOG1,NULL);
pDlg->ShowWindow(SW_SHOW);
pDlg是一个CTestDlg类的指针,已声明为视类的成员变量。视类的析构函数中delete掉这个指针所指向的内存。
运行,能够准确显示对话框,但在停止运行时出现:Unhandled exception at )x1020a702(msvcr71d.dll)
请问这是什么原因?
谢谢!

------解决方案--------------------
先单步调试
------解决方案--------------------
dlg.Create(IDD_DIALOG1,this);
dlg.ShowWindow(SW_SHOW);
dlg已声明为视类的成员变量。

——dlg在已经被create的情况下被再一次create

pDlg=new CTestDlg;
pDlg->Create(IDD_DIALOG1,NULL);
pDlg->ShowWindow(SW_SHOW);
pDlg是一个CTestDlg类的指针,已声明为视类的成员变量

——pDlg在已经指向一个CTestDlg的情况下又被指向另一个CTestDlg,前一个丢失






简单地说,就是你多次进行原本应该只进行一次的行为
------解决方案--------------------
dlg.Create(IDD_DIALOG1,this);
对话框只需要一次Create,以后只用调用ShowWindow就可以了。