2.10如何使文档自动保存而不用提示用户?

      当一个文档将要被关闭并且已经被标识为“已修改”(调用它的SetModifiedFlag()函数实现)时,默认的MFC行为将显示一个消息框,询问用户是否要保存该文档。

      然而有的时候,当要关闭修改过的文档时,要求自动保存它们,而不需要任何的用户交互行为。实现默认MFC行为的函数是CDocument::SaveModified()(DocCore.cpp)当用户选择File->Close菜单命令或关闭某个特殊文档的最后视图时,CDocument::OnFileClose()和CDocument::CanCloseFrame()分别调用CDocument::SaveModifiedFlag()函数。

      幸运的是,在CDocument的基类中SaveModified()是作为虚函数定义的,这样可以轻易的改变的它的行为,使用classwizard在自己 的文档类中重载这个函数,并使下面的程序清单所示的代码来实现它:

 

解释:MFC利用SaveModified()的返回值来知道释放文档对象是否安全。如果文档不需要保存,或者成功的调用了DoFileSave(),那么上面的程序清单代码返回true。DoFileSave()函数才是真正保存文档的函数。

实际上保存文档的过程为DoFileSave()->DoSave()->OnSaveDocument()->Serialize().如果文档从来没有保存过,则DoFileSave()将显示一个Save As对话框,这样用户就可以为该文档选择一个文件名了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值