怎么实现非模态对话框的关闭
如何实现非模态对话框的关闭
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的成员变量,
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; } }