WEB开发网
开发学院软件开发VC MFC教程(6)-- 应用程序的退出 阅读

MFC教程(6)-- 应用程序的退出

 2010-03-25 20:33:42 来源:WEB开发网   
核心提示:BOOL CDocument::SaveModified()该虚拟函数的缺省实现:首先调用IsModifed判断文档是否被修改,没有修改就返回,MFC教程(6)-- 应用程序的退出(2),否则继续,当询问用户是否保存被修改的文档时,关闭并销毁对应的边框窗口,如果文档对象的 m_bAutoDelete为真,若用户表示&l

BOOL CDocument::SaveModified()

该虚拟函数的缺省实现:首先调用IsModifed判断文档是否被修改,没有修改就返回,否则继续。

当询问用户是否保存被修改的文档时,若用户表示“cancel”,返回FALSE;若用户表示“no”,则返回TRUE;若用户表示“yes”,则存盘失败返回FALSE,存盘成功返回TRUE。存盘处理首先要得到被保存文件的名称,然后调用虚拟函数OnSaveDocument完成存盘工作,并使用SetModifidFlag(FALSE)设置文档为没有修改。

BOOL CDocument::OnSaveDocument(LPCTSTR lpszPathName)

该函数是虚拟函数,用来保存文件。其实现的功能和OpOpenDocument相反,但处理流程类似,描述如下:

根据lpszPathName打开文件pFile;

使用pFile构造一个用于写入数据的CArchive对象,此对象用来保存数据到文件;

设置鼠标为时间瓶形状;

使用Serialize函数完成序列化写;

完毕,恢复鼠标的形状。

CWinApp::SaveAllModified()

CWinApp::CloseAllDocuments(BOOL bEndSession)

这两个函数都遍历模板管理器列表,并分别对列表中的模板管理器对象逐个调用CDocManager的同名成员函数:

CDocManager::SaveAllModified()

CDocManager::CloseAllDocuments(BOOL bEndSession)

这两个函数都遍历其文档模板列表,并分别对列表中的模板对象逐个调用CDocTemplate的同名成员函数:

CDocTemplate::SaveAllModified()

CDocTemplate::CloseAllDocuments(BOOL bEndSession)

这两个函数都遍历其文档列表,并分别对列表中的文档对象逐个调用CDocuemnt的成员函数:

CDocument::SaveModified()

CDocument::OnCloseDocument()

CDocument::SaveModified()

CDocument::OnCloseDocument()

CDocument::SaveModified前面已作了解释。OnCloseDocument是一个虚拟函数,其流程如图6-2所示。

通过文档对象所对应的视,得到所有显示该文档的边框窗口的指针:在SDI程序关闭窗口时,获取的是主边框窗口;在MDI程序关闭窗口时,获取的是MDI子窗口。

然后,关闭并销毁对应的边框窗口。

如果文档对象的 m_bAutoDelete为真,则销毁文档对象自身。

窗口的销毁过程

上一页  1 2 3 4  下一页

Tags:MFC 教程 应用程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接