MFC的怎么进行文件保存

2024-12-02 16:42:03
推荐回答(3个)
回答1:

用CFile,CArchive等都可以保存, 做一个按钮保存,另一个装入,即可。

或者在对话框退出时自动保存,在初始化时自动装入。 无需按行保存,就用一个变量即可

例如:对话框开启时写:
BOOL CTest1Dlg::OnInitDialog()
{

//系统自动产生的代码省略。。。

   // TODO: Add extra initialization here

CFile mFile;
     
      if(mFile.Open("user.txt",CFile::modeRead))
      {
     CArchive ar(&mFile,CArchive::load);
     ar>>m_Name>>m_Age;
     ar.Close();
      UpdateData(FALSE);
      }

return TRUE;  
}

退出时:
void CTest1Dlg::OnExit()
{
   // TODO: Add your control notification handler code here

CFile mFile;
     
if(mFile.Open("user.txt",CFile::modeWrite|CFile::modeCreate))
      {
     CArchive ar(&mFile,CArchive::store);
     UpdateData(TRUE);
     ar<      ar.Close();
         }
   this->OnOK();
}

补充:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

回答2:

你现在这个,是因为使用了MFC标准文档视图框架,在没有自定义的情况下,默认调用了基类的CDocument::OnFileSave()

不自定义,使用默认保存处理,是可以实现文件保存的。

  1. 在字符串资源中设置文档默认扩展名可以完成“保存类型”的设置

  2. 将要保存的内容完整的序列化到文档类的Serialize中(如果要保存图片,那么需要文件的完整格式进行序列化)

简单的说,在Doc类中重写Serialize成员函数。在函数中对你要保存的对象序列化。

完成之后,点击菜单栏上的保存和打开就可以实现序列化了。

回答3:

修改字串资源。