domodal出来的对话框中的析构函数什么时候执行

kong_mdmq 2012-09-12 04:48:24
我的程序结构是这样的 在主对话框a中domodal出来一个菜单界面b
菜单界面b有10个按钮 点击每一个按钮会对应domodal出来一个对话框b1,b2 。。。。b9, b10.同时关闭对话框b(也就是OnCancel();
Cb1Dlg b1;
b1.DoModal();)

然后我会分别给这10个对话框添加析构函数 要从这10个对话框返回上一层菜单b 同样也是
OnCancel();
CbDlg b;
b.DoModal();

按理说关闭当前对话框(b1,b2 。。。。b9, b10)时该对话框的析构函数就会执行 也就是OnCancel()执行完后。
但是现在的问题是 只有在关闭对话框b之后 这10个对话框的析构函数才会执行 请问这是为什么
另外说明的是我DoModal之后并未指定父窗口 这个有影响没
...全文
195 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
傻X 2012-09-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 6 楼 的回复:
DoModal();没有析构功能
Cb1Dlg b1 所在函数结束结束才会析构啊。

析构是在销毁的时候才调用,要到b1生命周期结束才调用


那么b1的生命周期是什么时候结束啊
Cb1Dlg b1 所在函数的窗口消失? 或者您说的“Cb1Dlg b1 所在函数结束结束才会析构”我这个函数是个按钮单击响应函数啊,不会点击完按钮里面代码执行完就析构吧 按钮函数……
[/Quote]

所在函数结束就玩完
schlafenhamster 2012-09-13
  • 打赏
  • 举报
回复
用菜单的话不会存在这些问题
kong_mdmq 2012-09-13
  • 打赏
  • 举报
回复
因为一开始并不知道有菜单这个资源。。 就一直用的对话框的模式
也一直没用过菜单 用菜单的话不会存在这些问题吗
schlafenhamster 2012-09-13
  • 打赏
  • 举报
回复
为何不使用菜单或toolbar ?
kong_mdmq 2012-09-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
你定义的类变量出了作用域范围才回调用析构函数
[/Quote]

我定义的类变量的作用域就是按钮单击响应函数啊
局部变量 那什么时候调用析构函数呢
kong_mdmq 2012-09-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
DoModal();没有析构功能
Cb1Dlg b1 所在函数结束结束才会析构啊。

析构是在销毁的时候才调用,要到b1生命周期结束才调用
[/Quote]

那么b1的生命周期是什么时候结束啊
Cb1Dlg b1 所在函数的窗口消失? 或者您说的“Cb1Dlg b1 所在函数结束结束才会析构”我这个函数是个按钮单击响应函数啊,不会点击完按钮里面代码执行完就析构吧 按钮函数里面代码为
OnCancel();
Cb1Dlg b1;
b1.DoModal();
Eleven 2012-09-12
  • 打赏
  • 举报
回复
你定义的类变量出了作用域范围才回调用析构函数
傻X 2012-09-12
  • 打赏
  • 举报
回复
DoModal();没有析构功能
Cb1Dlg b1 所在函数结束结束才会析构啊。

析构是在销毁的时候才调用,要到b1生命周期结束才调用

傻X 2012-09-12
  • 打赏
  • 举报
回复
DoModal();没有析构功能
Cb1Dlg b1 所在函数结束结束才会析构啊。

析构是在销毁的时候才调用,要到b1生命周期结束才调用

昨夜无风 2012-09-12
  • 打赏
  • 举报
回复
不要在析构函数中,对每个对话框重载OnCancel(),在里面响应下一个对话框的弹出
gfm688 2012-09-12
  • 打赏
  • 举报
回复
你可以把(b1,b2 。。。。b9, b10)的DoModal写到另一个函数里,再在b DoModal之前调用该函数
kong_mdmq 2012-09-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
这个跟DoModal没关系,栈上的临时类实例,出了作用域自动调用析构。
[/Quote]

那么我点击按钮,会执行关闭当前窗口并且打开新对话框的操作,当前窗口都关闭了,不是此时就出了作用域了吗
kong_mdmq 2012-09-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
这个跟DoModal没关系,栈上的临时类实例,出了作用域自动调用析构。
[/Quote]

那么我点击按钮,会执行关闭当前窗口并且打开新对话框的操作,当前窗口都关闭了,不是此时就出了作用域了吗
Waistcoat24 2012-09-12
  • 打赏
  • 举报
回复
这个跟DoModal没关系,栈上的临时类实例,出了作用域自动调用析构。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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