mfc关闭程序所有子窗口

xuexi_xiangshang 2013-01-22 11:23:59
我编写了一个基于对话框的VC程序,这个程序在满足一个特定条件时会自动关闭,我在Timer事件里定时检查这一条件是否满足,当满足条件时关闭主窗口(调用OnCancel();)。现在的问题是用这种方法主窗口能够关闭,但是主窗口打开的子窗口却无法关闭。如何在主窗口被关闭时找到它的所有子窗口并关闭他们呢?
...全文
1343 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
坏蛋你好 2014-10-13
  • 打赏
  • 举报
回复
在需要关闭的窗体中重载onclose()函数,在想关闭窗体的地方声明类对象调用该窗体的onclose()函数不就完了?,当然前提要关闭父窗体必须在父窗体的onclose()函数中调用关闭子窗体,虽然麻烦但是基本不会有问题。
qxw_csdn 2014-10-12
  • 打赏
  • 举报
回复
了解,谢谢。
sichuanwww 2014-10-12
  • 打赏
  • 举报
回复
用 AfxGetMainWnd()->DestroyWindow();
yangchuankai 2014-10-12
  • 打赏
  • 举报
回复
人家对象和控件又不是一个东西,你new的为毛用delete人家就得关闭,,,主窗口关闭时给子串口发消息吧
feige557 2014-10-11
  • 打赏
  • 举报
回复
29楼可以 ExitProcess(0); //关闭整个程序
叶恭介叶恭介 2014-05-05
  • 打赏
  • 举报
回复
发给我吧.
deguangchow 2014-05-05
  • 打赏
  • 举报
回复
ExitProcess(0); //关闭整个程序
潜龙游水 2013-07-04
  • 打赏
  • 举报
回复
26楼正解!!!
夏季浅川 2013-04-01
  • 打赏
  • 举报
回复
用 AfxGetMainWnd()->DestroyWindow();
Aweiwei_ 2013-01-28
  • 打赏
  • 举报
回复
霸气的exit(); 世界清静了!!!
schlafenhamster 2013-01-23
  • 打赏
  • 举报
回复
"但是打开文件对话框,保存对话框(CFileDialog 类)就不能关闭" 显然 CFileDialog 类 不是 对话框 的 子窗口。但 他是 模态的,用户必须 先 提出才行。
xuexi_xiangshang 2013-01-23
  • 打赏
  • 举报
回复
我试了,主窗口是能关闭,子窗口没有关闭。这是怎么的。。。
rxguoblp 2013-01-23
  • 打赏
  • 举报
回复
再试试下面的: UINT ThreadFun(LPVOID lpvoid)//线程函数 { while (1) { WaitForSingleObject(g_event,INFINITE); if (logic == TRUE)//自定义的逻辑条件 { ::SendMessage(hwnd,WM_CLOSE,(WPARAM)(LPCTSTR)"",16);//hwnd是“主窗口的句柄”,你需要在OnInitialDialog()中为其赋值 } SetEvent(g_event); } } 我已经测试过,可以把全部窗口关闭。
xuexi_xiangshang 2013-01-23
  • 打赏
  • 举报
回复
按你说的改了,不行,一点反应都没有,窗口就没关闭
rxguoblp 2013-01-23
  • 打赏
  • 举报
回复
11楼和12楼的大哥不都已经告诉你了吗?! 把dlg->MessageBox(_T("close all windows"), NULL,MB_ICONERROR|MB_OK); dlg->CDialog::OnCancel(); 这两句话换成PostQuitMssage(0);
xuexi_xiangshang 2013-01-23
  • 打赏
  • 举报
回复
用PostQuitMssage(0);没有用,子窗口没有关闭。
用CloseWindow();主窗口关闭,用new生成的对话框也能关闭,但是打开文件对话框,保存对话框(CFileDialog 类)就不能关闭,且进程还在。


引用 6 楼 rxguoblp 的回复:
在主窗口类中添加一系列指针变量CWND*,用于保存子窗口的指针。这样在退出代码中就可以与关闭主窗口一样实施关闭操作了。

这种方法没有试过,不知道怎么保存子窗口的指针,能否贴点代码指点一下。
sumos 2013-01-23
  • 打赏
  • 举报
回复
dlg->PostQuitMssage(0); 真心无语,别人的建议你都不试一下的
xuexi_xiangshang 2013-01-23
  • 打赏
  • 举报
回复
没人再帮我看一下
schlafenhamster 2013-01-23
  • 打赏
  • 举报
回复
FindWindow()
xuexi_xiangshang 2013-01-23
  • 打赏
  • 举报
回复
怎么获得窗口的HWND,用哪个函数
加载更多回复(15)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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