MFC 中如何关闭当前打开的所有的非模式的对话框。 15

打开了多个非模态的对话框,每个对话框上都保存有一些数据。如何全部关闭当前的非模态对话框,并保证再次打开的时候不会保留前一次关闭时的数据。... 打开了多个非模态的对话框,每个对话框上都保存有一些数据。如何全部关闭当前的非模态对话框,并保证再次打开的时候不会保留前一次关闭时的数据。 展开
 我来答
bhtzu
2015-03-18 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4218万
展开全部
描述有些模糊。最关键的窗口关系没有描绘。
首先要确认“所有打开的非模态对话框”和主窗口的关系,如果这些对话框没有指明父窗口甚至存在其它多个父窗口,并且对话框的声明都是临时的,那么这个事情没法做。
如果所有对话框的父窗口都是同一个主窗口,那么通过EnumChildWindows获取所有对话框并关闭是没有问题的,但这个方法相对复杂,需要使用回调函数。
简单的办法:非模态对话框的指针,做成主窗口的成员变量,创建的时候如果存在,则只ShowWindow,这样可以保证不重复;而关闭就简单了,将这个(或这些)成员变量指针逐一判断,如果窗口存在,就SW_HIDE隐藏窗口、销毁指针即可。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式