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