读书人

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

发布时间: 2012-08-14 10:39:57 作者: rapoo

如何实现非模态对话框的关闭
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 hereif (flag1!=1){Step1=new Cstep1;Step1->Create(IDD_Step1);Step1->ShowWindow(SW_SHOW);flag1=1;}else{Step1->EndDialog(IDOK);flag1=0;delete Step1;}} 

读书人网 >C++

热点推荐