MFC在视类中如何退出程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC在视类中如何退出程序相关的知识,希望对你有一定的参考价值。

如果试图给视类发送WM_CLOSE消息只能造成当前文档被关闭
是不是该发给框架类呢?那又该怎么个发法?

主要还是在视类中实现退出整个程序

视窗程序一般不应当在CView中退出整个程序。
应当在CWinApp用
CWinApp::OnAppExit 退出。
改写OnAppExit:
ON_COMMAND(ID_APP_EXIT, OnAppExit)

真想关掉程序,揿窗右上角的叉叉框就可以了。
参考技术A AfxGetMainWnd()->SendMessage(WM_CLOSE);

不要使用ExitProcess,该函数具有强制性,在执行完毕后进程即被结束,因此位于其后的任何代码将不能被执行。虽然ExitProcess()函数可以在结束进程的同时通知与其关联的动态链接库,但是由于它的这种执行的强制性,使得ExitProcess()函数在使用上将存在有安全隐患。
例如,如果在程序调用ExitProcess()函数之前曾用new操作符申请过一段空间,那么将会由于ExitProcess()函数的强制性而无法通过delete操作符将其释放,从而造成内存泄露。有鉴于ExitProcess()函数的强制性和不安全性,在使用时一定要引起注意。本回答被提问者和网友采纳
参考技术B exit(0); 参考技术C ExitProcess(0);

VC++调试的基本快捷键

VS2012新建一个单文档工程;在视类CPP文件尾部添加一个sum()函数;

int sum()
    int i, sum=0;
    for(i=1; i<=100; i++)
        sum+=i;
    
    return sum;

在视类CPP文件头部添加sum()函数声明;在OnDraw()函数写如下代码;在如下图语句设置断点; 

 启动调试;停留到如下图;

按F11,这是逐语句调试,然后会进入sum()函数,

 

按F11会一直在此函数内部,

 

跳出函数按Shift+F11,返回到下图;

 

结束此次运行;重新启动调试,停留到 s1 = sum(); 这一句时,按F10,这是逐过程调试,不会进入sum()函数内,直接进到下一句;

 

 F11 - 逐语句,F10 - 逐过程,Shift+F11 - 从函数中跳出;

以上是关于MFC在视类中如何退出程序的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用 MFC 应用程序在按 ESC 或 ALTF+F4 时退出?

如何实现:MFC编程,对话框内按钮动作实现退出应用程序?

为啥我的 MFC 应用程序无法完全退出?

MFC 程序退出方法

Qt/MFC 迁移框架工具:正确退出 DLL?

MFC-对话框屏蔽ENTER和ESC防止自动退出程序