VC++怎样关闭整个程序

szywmy 2009-02-26 01:01:27
从登陆对话框登陆到另一个对话框(主窗体)后,怎样做到在点击主窗体右上角的关闭按钮后,让整个程序全部关闭?
...全文
533 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
辰岡墨竹 2011-07-13
  • 打赏
  • 举报
回复
既然是MFC,就不要C++的退出程序exit方式,会失去很多销毁过程的控制,用PostQuitMessage发WM_QUIT是标准的Windows程序退出方式
tab0tab 2011-07-12
  • 打赏
  • 举报
回复
exit(),destroy(),quit()
辰岡墨竹 2011-07-12
  • 打赏
  • 举报
回复
别用exit(),它退出比较暴力,虽然可以atexit设置退出函数。但是你很多窗口都来不及做OnClose、OnDestroy销毁等后续工作了。
如果你要求直接退出整个程序,可以PostQuitMessage()。这样能正确进入WinApp类的ExitInstance()做很多关闭文件什么的后续操作。
估计你的对话框是模式对话框,它打开的时候,主窗口被禁用了,所以处理不了WM_CLOSE这样的GUI消息。你可以把对话框改成非模式的,也就是用CreateDialogIndirect来创建对话框,结束对话框时DestoryWindow。这样的话,用WM_CLOSE消息也可以。
SophiaNM 2011-07-12
  • 打赏
  • 举报
回复
exit(),好用
一叶之舟 2011-07-12
  • 打赏
  • 举报
回复
点X,要想全部退出
1、如果有线程,停止所有线程。
2、释放分配的资源,包括内存、句柄、创建的窗口等。
3、执行CDialog::OnCancel();
koolxiaoyuer 2011-07-12
  • 打赏
  • 举报
回复
vs开发平台或者vc6.0可以打开《你的对话框.h》文件,还有属性窗口,有个闪电符号(事件),和方号(重写),重写里有:OnCancle,添加OnCancle,就能在.h和.cpp里加入此函数了,你在这个函数里写你要处理的代码(例如释放一些new的东西,或者退出前保存等等工作)
赵4老师 2011-07-12
  • 打赏
  • 举报
回复
exit(1);
wenlin2008 2011-07-12
  • 打赏
  • 举报
回复
#include“stdlib.h”
Exit(0);
这个有用,谢谢ls
下载啊啊啊 2009-09-23
  • 打赏
  • 举报
回复
头文件加#include “stdlib.h”
源文件加Exit(0);
weir75034 2009-02-26
  • 打赏
  • 举报
回复
建立 WM_SYSCOMMAND 消息响应函数,在响应函数里面加入下面语句:

void CtestmfcDlg::OnSysCommand(UINT nID, LPARAM lParam)
{

if (nID == SC_CLOSE)
{
PostQuitMessage(0);
}
//上面的是自己加的,其实不必要的,下面的
//CDialog::OnSysCommand(nID, lParam)会自动处理
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
szywmy 2009-02-26
  • 打赏
  • 举报
回复
我还是说的再明白点吧,就是点击退出按钮,关闭整个程序,即所有对话框···
WillyWonka 2009-02-26
  • 打赏
  • 举报
回复
把登录对话框设定为非模态对话框
gql1123 2009-02-26
  • 打赏
  • 举报
回复
主窗体关闭子窗体不也KO了吗?析构函数
shell8232565 2009-02-26
  • 打赏
  • 举报
回复
那就指明你要关闭对话框的句柄啊
  • 打赏
  • 举报
回复
到底哪个是主对话框。。。
叶落寒山 2009-02-26
  • 打赏
  • 举报
回复
应该不会的。
我的邮箱 huayehanshan@sina.com
你发过来我给你看看。
szywmy 2009-02-26
  • 打赏
  • 举报
回复
我的步骤是这样子的呢:我先登陆,然后登陆到主窗体(我自己认为的),然后呢,我在主窗体里有个按钮,我在按钮事件里添上了你说的那段代码 void main_Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
AfxGetMainWnd()->SendMessage(WM_CLOSE);

}当我点击按钮的时候,没任何反应,整个程序还在执行呢!我用的是基于对话框模式的并且我用的工具是visul stuio 2005!!
叶落寒山 2009-02-26
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 szywmy 的回复:]
是基于对话框的,我每次启动调试,先显示出来的是登陆窗体,那么我想先出来主窗体怎么办啊?
[/Quote]

你在主窗体的按钮中加入AfxGetMainWnd()->SendMessage(WM_CLOSE); 关闭不了程序吗?

你是怎么加的?贴出来看看。我试了可以关闭呀
snowying2008 2009-02-26
  • 打赏
  • 举报
回复
distroywindows
snowying2008 2009-02-26
  • 打赏
  • 举报
回复
distroywindows
加载更多回复(15)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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