打开文件的时候把文件都读到View类里了,画图操作也是用的这些数据。
现在想加上一个提示保存功能,可是设置了Document类的标示后,它会自己调用Serialize函数对文件进行保存。
如何才能在实现使用我在View类写的保存函数呢?

解决方案 »

  1.   

    保存任何数据都应该放在CDocument类中
      

  2.   

    在View类 响应 ID_FILE_SAVE或者在文档类里 OnSaveDocument 调用视图的保存 函数。 文档类里可以枚举视图,估计得到一个就可以了
      

  3.   

    那就要 在View类 响应 ID_FILE_SAVE, 也就是每一种方式.在这个命令处理函数里, 弹出对话框,让用户选择一个文件名,然后你按你的方式保存就是了
      

  4.   

    View类的ID_FILE_SAVE我早就重载过了,没用的,他不会自己响应的,
    关闭时弹出的保存对话框并不是View类的,好像是系统自己调用的。
    我试了重载了DOC类里的也没用
    能不能让它响应自己的函数呢?
    我也想过自己截获关闭消息,在View类自己弹出一个“是”、“否”、“取消”提示,“是”和“否”都比较好办,可以截获关闭消息后还能让它“取消”吗?
      

  5.   

    关闭时弹出的保存对话框。 是这样的,框架询问 文档是否可以关闭。 CDocument::CanCloseFram函数被调用, 文档检查修改标志,调用SaveModified () 函数。你在这个函数里重载。并不调用默认实现 。而是枚举视图,并调用视图的保存函数,如果视图保存成功。那么返回TRUE,否则返回 FALSE。一般用户取消保存对话,应该返回FALSE。
      

  6.   

    刚才看了一下MFC的源代码. 如果直接覆盖SaveModified  那将没有 那个"文件已经被修改,是否保存?"的提示了.更好的办法是覆盖CDocument的虚函数DoFileSave;原形如下:virtual BOOL CDocument::DoFileSave();这个虚函数是不公开的,在向导里没有,不过没关系,一样可以