问题描述:
单文档程序,界面中加入了一个基于CFromView的对话框,给单文档添加了OnClose(),在其中进行一些保存提示和关闭整个程序的代码。
但是在release版本下,尝试了各种结束程序的办法,都不成功,有的窗口关了但进程还在cpu占用马上达到99%,有的显示0x00407377指令引用的“0x000000020”内存。该内存不能为“Read”。等等。请问:
在单文档的OnClose()中,怎样才能关闭整个应用程序?
在OnDestroy()中,是否可以同样完成关闭?
单文档程序,界面中加入了一个基于CFromView的对话框,给单文档添加了OnClose(),在其中进行一些保存提示和关闭整个程序的代码。
但是在release版本下,尝试了各种结束程序的办法,都不成功,有的窗口关了但进程还在cpu占用马上达到99%,有的显示0x00407377指令引用的“0x000000020”内存。该内存不能为“Read”。等等。请问:
在单文档的OnClose()中,怎样才能关闭整个应用程序?
在OnDestroy()中,是否可以同样完成关闭?
当然,由于OnClose默认调用DestroyWindow来销毁窗口,如果你判断不想关闭,不调用CWnd::OnClose()直接返回,窗口就不会关闭,所以这里也是处理“是否关闭/退出”信息的地方。
void CMainFrame::OnClose()
{
// TODO: Add your message handler code here and/or call default
if(m_pInfoView->m_EChan)
{
MessageBox("当前记录已经改变,请注意保存~","提示",MB_OK|MB_ICONINFORMATION);
m_pInfoView->m_EChan = FALSE;
return;
}
if(m_pInfoView->m_TChan)
{
MessageBox("当前标题已经改变,请注意保存~","提示",MB_OK|MB_ICONINFORMATION);
m_pInfoView->m_TChan = FALSE;
return;
}
//AfxGetMainWnd()->PostMessage(WM_QUIT);
//ExitProcess(0);
CFrameWnd::OnClose();
}void CMainFrame::OnDestroy()
{
CFrameWnd::OnDestroy();
//GetParent()->SendMessage(WM_CLOSE);
//PostMessage(WM_COMMAND,ID_FILE_CLOSE);
PostMessage(WM_QUIT,0,0);
//ExitProcess(0);
//AfxGetMainWnd()->PostMessage(WM_QUIT);
// TODO: Add your message handler code here
}
{
CFrameWnd::OnDestroy(); // TODO: Add your message handler code here
}