如何用键盘关闭一个应用程序

 我来答
kycs5mtp0
2011-05-28 · TA获得超过519个赞
知道小有建树答主
回答量:615
采纳率:0%
帮助的人:385万
展开全部

程序的启动和退出是要讲究顺序的,实则就是一个栈式的过程,比如你启动一个SDI程序或者MDI程序,先启动APP,再分别启动MainFrm,ChildFrm,以及View。这几者之间是有相互依赖关系的。可以想象,当你要退出一个程序时,你得反过来分别退出View,ChildFrm,MainFrm,最后才是App。
所以,你在View里使用DestroyWindow()导致这种顺序打乱了,所以才出现程序崩溃的错误。

给你补补吧,MDI程序退出顺序如下:
1、当框架CFrameWnd关闭时,会接收到WM_CLOSE消息,通过消息映射会执行OnClose方法;
2、在OnClose方法中,由于框架是应用程序的主窗口,因此会调用应用程序的CloseAllDocuments方法;
3、应用程序的CloseAllDocuments调用了文档管理器的CloseAllDocuments方法;
4、文档管理器的CloseAllDocuments方法调用了文档模板的CloseAllDocuments方法;
5、在文档模板的CloseAllDocuments方法中,调用了文档的OnCloseDocument方法;
6、在文档对象的OnCloseDocument方法中,调用了框架的DestroyWindow方法,而框架的DestroyWindow方法直接调用了CWnd的DestroyWindow方法释放窗口;
7、在窗口类CWnd的DestroyWindow方法中,调用了API函数DestroyWindow释放窗口。该函数会向窗口发送WM_DESTROY消息,执行视图类的OnDestroy方法,接着释放掉视图窗口,在视图窗口被释放后,向视图窗口发送最后一个窗口消息WM_NCDESTROY,执行视图的PostNcDestroy方法;
8、PostNcDestroy方法中的“delete this;”最终会调用视图的析构函数释放掉视图对象。

通过以上可知,过早地执行DestroyWindow违反了这一顺序;利用楼上所述,使用AfxGetMainWnd()->SendMessage(WM_CLOSE); 就应该不会有问题了。
百度网友727cc8e
2011-05-28 · TA获得超过201个赞
知道小有建树答主
回答量:712
采纳率:0%
帮助的人:243万
展开全部
先用Ctrl+Shift+Esc调出任务管理器,然后方向键选择程序进程,再按Alt+E结束进程即可
在此之前最好试试Alt+F4管不管用然后在用这个方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贵菊求丹寒
2020-06-11 · TA获得超过3813个赞
知道大有可为答主
回答量:3151
采纳率:27%
帮助的人:416万
展开全部
TAB+ALT是窗口切换的,ALT+F4关闭当前的窗口的,CTRL+ALT+DEL是掉出任务管理器的,可以在那里关闭窗口,还可以关闭一些进程。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
san出复叶
2011-05-27 · TA获得超过759个赞
知道答主
回答量:138
采纳率:0%
帮助的人:30.8万
展开全部
ALT+F4
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qywj12345
2011-05-27
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
用Ctri+Ait+Dei 再点结束任务
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式