File->Exit菜单项对应的消息处理函数是CWinApp::OnAppExit,该函数主要是向主窗口发送一个WM_CLOSE消息,此消息由CFrameWnd::OnClose来处理,做一些类似于提示存盘之类的例行工作,最后调用DestroyWindow销毁窗口,发送WM_QUIT结束主消息循环,结束程序。
如果你想用一个菜单项来结束程序,MFC建议的做法是将该菜单项的ID定义为ID_APP_EXIT,这样程序的结束工作将由应用程序框架自动来完成,而不需要你再添加额外的代码。

解决方案 »

  1.   

    楼上的很对,就把WM_QUIT改成WM_CLOSE就行了。
      

  2.   

    向窗口发送 WM_CLOSE消息,调用 CWnd::OnClose成员函数.允许对用户提示 是否保存修改过的数据. Example: AfxGetMainWindow()->SendMessage(WM_CLOSE); 还可以创建一个自定义的函数 Terminate Window void Terminate Window(LPCSTR pCaption) { CWnd *pWnd=Cwnd::FindWindow(NULL,pCaption); if (pWnd) pWnd ->SendMessage(WM_CLOSE); } 说明: FindWindow函数不是提倡的做法,因为它无法处理标题栏自动改变,比如我们要检测 Notepad是不是已运行而事先不知道Notepad的标题栏,这时 FindWindow就无能为力了,可以通过枚举 windows任务列表的办法来实现。 在 机械出版社"Windows 95 API开发人员指南"一书有比较详细的介绍,还可以用C语言的函数exit等方法!