社区
界面
帖子详情
如何实现关闭所有非模态对话框后主窗口自动关闭?
wencai8792
2010-04-09 12:44:56
MFC基于对话框做了一个窗口作为主窗口,再新建了一个对话框CTestDlg,然后这个对话框以非模态创建,创建了多个。
然后主窗口隐藏了。。。当关闭所有的CTestDlg后,主窗口还没有关闭。
现在想要的效果是,当所有的CTestDlg对话框关闭后,隐藏了的主窗口也自动关闭,请问怎样实现?
...全文
571
7
打赏
收藏
如何实现关闭所有非模态对话框后主窗口自动关闭?
MFC基于对话框做了一个窗口作为主窗口,再新建了一个对话框CTestDlg,然后这个对话框以非模态创建,创建了多个。 然后主窗口隐藏了。。。当关闭所有的CTestDlg后,主窗口还没有关闭。 现在想要的效果是,当所有的CTestDlg对话框关闭后,隐藏了的主窗口也自动关闭,请问怎样实现?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
amoylel
2012-11-09
打赏
举报
回复
感谢楼主,折腾了好久
star060829
2011-11-05
打赏
举报
回复
谢谢,解决了我的问题。支持楼主解决问题 贴答案的方法!
baili35
2010-04-09
打赏
举报
回复
处理CTestDlg的关闭事件,给主窗体发送消息让他关闭就ok
wencai8792
2010-04-09
打赏
举报
回复
谢谢各位。。问题解决了。。。。
新对话:CMainForm 主窗口:C***Dlg
为了让对话框的数据能反馈回主窗口,需要通过对话框向主窗口发送一个自定义消息,触发主窗口的一个函数,把对话
框的数据传回主窗。为了能向主窗口发送消息,需要取得主窗口指针,因此重载对话框的构造函数,生产对话框的时候
把主窗的指针传给对话框。
在CMainForm.h增加以下:
public:
CMainForm(CWnd* pParent); // 标准构造函数
CWnd *pView; //定义一个存储主窗的指针
protected:
virtual void OnDestroy(); //重载OnDestroy函数声明,为了关闭对话框时间向主窗提供数据
MainForm.cpp : 实现文件
#define WM_DLGCLOSE (WM_USER +3)//当对话框关闭的自定义消息
CMainForm::CMainForm(CWnd* pParent /*=NULL*/)
: CDialog(CMainForm::IDD, pParent)
{
pView=pParent;//把DLG类的指针保存
}
//程序退出要做的事
void CMainForm::OnDestroy()
{
UpdateData(TRUE);//显式调用实现数据交换
pView->SendMessage(WM_DLGCLOSE);//向主窗发送消息
CDialog::OnDestroy();
DeleteTray();//删除托盘图标函数
delete this;
}
对话框把消息发送回主窗后,主窗需要响应该相应的消息,调用函数接受数据的变化。
在**Dlg.h中,修改以下:
protected:
afx_msg LRESULT OnDialogClose(WPARAM wParam, LPARAM lParma); //声明对话框关闭消息处理函数
public:
static int DlgCount;//定义一个记数,记录对话框数
在**Dlg.cpp中,修改如下:
int C***Dlg::DlgCount=0;//已打开的对话框数量
BEGIN_MESSAGE_MAP(C***Dlg, CDialog)
...
ON_MESSAGE(WM_DLGCLOSE,OnDialogClose) //自定义消息处理函数,对话框发回的消息这里吵醒主窗,然后它
执行OnDialogOk
END_MESSAGE_MAP()
LRESULT C***Dlg::OnDialogClose(WPARAM wParam, LPARAM lParma)
{
AfxMessageBox("处理消息");
C***Dlg::DlgCount--;
if(C***Dlg::DlgCount==0)
{
OnOK();
}
return 0;
}
新建并弹出非模式对话框
CMainForm *dlg=new CMainForm(this);
dlg->Create(IDD_MAINFORM,NULL);
dlg->ShowWindow(SW_SHOW);
this->ShowWindow(SW_HIDE);
C***Dlg::DlgCount++;
Eleven
2010-04-09
打赏
举报
回复
ls的方法可行。。。
SullenSun
2010-04-09
打赏
举报
回复
加个变量计算开了多少个DIALOG,每关闭一次减1,为0时给主窗口发消息关闭。
wencai8792
2010-04-09
打赏
举报
回复
能不能具体点?想要的效果,好像主窗口一关闭就所有对话框都关闭了的,处理CTestDlg的关闭事件
怕关一个对话框导致所有的窗口都关闭了`~
多
模态
人物识别技术及其在视频场景中的应用
本次分享将介绍爱奇艺人物识别及相关的应用,多
模态
的进展、难点、可落地的点,卡通角色识别的难点、应用中所要解决的问题,AIWWorks智能创作的技术架构、所利用到的AI技术总览、AI所擅长的及AI所不能及的创作点。
MFC中的
模态
对话框
与
非
模态
对话框
的消息循环及消息传递问题(都可以通过SendMessage传递消息)
模态
对话框
和
非
模态
对话框
都可以通过SendMessage这个API传递消息 1、
非
模态
对话框
和父
窗口
共享当前线程的消息循环 2、
模态
对话框
新建一个新的消息循环,并由当前消息循环派发消息,而父
窗口
。
模态
对话框
屏蔽了用户对...
非
模态
对话框
的创建和销毁及全局指针的使用注意事项
//
窗口
关闭
(销毁)代码段: //一开始没有"pDlgDataMonitor=NULL;"一句 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////...
QDialog
模态
对话框
与事件循环
起源 qtcn中文论坛中有网友问到: 假设程序正常运行时,只有一个简单的窗体A,此时只有一个GUI主线程,在这个主线程中有一个事件循环处理窗体...
模态
对话框
和 事件循环 没有必然联系事件循环 和 子线程 没有必然联系
2019-6-23-WPF-解决弹出
模态
窗口
关闭
后,主
窗口
不在最前
title author date CreateTime categories ... WPF 解决弹出
模态
窗口
关闭
后,主
窗口
不在最前 lindexi 2019-06-23 11:48:38 +0800 2018-2-13 17:23:3 +0800 WPF 本文告诉大家如何解决这个问题...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章