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

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

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

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

      BOOL CDrawDoc::SaveModified() 
      {
             // Document with "autosave" feature
             if( !IsModified() )
                    return TRUE;  // OK to destroy document

             // Actually save the document (without prompting the user)
             return DoFileSave();
      }

 

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

      实际上,DoFileSave()首先调用DoSave(),后者进而调用OnSaveDocument(),OnSaveDocument()来设置这个文档的存档文档,最后调用Serialize().

      注意:如果文档从来没有保存过(它仍然是一个未赋标题的文档),则DoFileSave()将显示一个Save as对话框,这样用户就可以为该文档显示一个文件名了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值