怎么实现非模态对话框的关闭

如何实现非模态对话框的关闭
void CSurfaceDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
Cstep1 *Step1=new Cstep1;
if (flag1!=1)
{

Step1->Create(IDD_Step1);
Step1->ShowWindow(SW_SHOW);
flag1=1;
}
else
{
Step1->DestroyWindow();
flag1=0;
delete Step1;
}
}
程序如上,要实现的功能是点一下打开非模态对话框,再点一下关闭。
现在运行结果是,点一下打开,再点一下没反应,再点一下又打开一个,为什么啊?

------解决方案--------------------
Cstep1 *Step1=new Cstep1;

不要把Setp1设置为局部变量

你每点一个按钮,都会new一个CStep对象,逻辑上就不对
------解决方案--------------------
每次点击button1都新建一个对象当然不行拉
建议你把Step1设成CSurfaceDlg的成员变量,
C/C++ code

void CSurfaceDlg::OnButton1()  
{
// TODO: Add your control notification handler code here
if (flag1!=1)
{
Step1=new Cstep1;
Step1->Create(IDD_Step1);
Step1->ShowWindow(SW_SHOW);
flag1=1;
}
else
{
Step1->EndDialog(IDOK);
flag1=0;
delete Step1;
}
}