如何实现非模态对话框的关闭

a2901153 2012-07-13 03:52:43
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;
}
}
程序如上,要实现的功能是点一下打开非模态对话框,再点一下关闭。
现在运行结果是,点一下打开,再点一下没反应,再点一下又打开一个,为什么啊?
...全文
260 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yosef_gao 2012-07-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

好像关闭用Close函数吧?
[/Quote]
是用DestroyWindow吧?
感觉2楼4楼说的对。
PANHL97 2012-07-14
  • 打赏
  • 举报
回复
每次点击button1都新建一个对象当然不行拉
建议你把Step1设成CSurfaceDlg的成员变量,

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;
}
}

ccnyou 2012-07-14
  • 打赏
  • 举报
回复
static吧
longrb 2012-07-13
  • 打赏
  • 举报
回复
Cstep1 *Step1=new Cstep1;

不要把Setp1设置为局部变量

你每点一个按钮,都会new一个CStep对象,逻辑上就不对
W170532934 2012-07-13
  • 打赏
  • 举报
回复
好像关闭用Close函数吧?

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧