首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-08-14 
如何实现非模态对话框的关闭void CSurfaceDlg::OnButton1(){// TODO: Add your control notification hand

如何实现非模态对话框的关闭
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;}} 

热点排行