MFC的怎么进行文件保存
我现在还没有进行保存和读取的编程,但按下保存以后就可以出现上面的图片,但是保存的文件无效。我不知道该怎么编程,急求大神指导,财富可以添加!! 展开
用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<<m_Name<<m_Age;
ar.Close();
}
this->OnOK();
}
补充:微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
你现在这个,是因为使用了MFC标准文档视图框架,在没有自定义的情况下,默认调用了基类的CDocument::OnFileSave()
不自定义,使用默认保存处理,是可以实现文件保存的。
在字符串资源中设置文档默认扩展名可以完成“保存类型”的设置
将要保存的内容完整的序列化到文档类的Serialize中(如果要保存图片,那么需要文件的完整格式进行序列化)
简单的说,在Doc类中重写Serialize成员函数。在函数中对你要保存的对象序列化。
完成之后,点击菜单栏上的保存和打开就可以实现序列化了。
请问一下:
1、怎么设置扩展名?字符串资源在哪设置?
2、序列化是怎么回事?
3、使用默认保存方便还是自定义保存方便?
不好意思,MFC的保存功能没学过,也找不到相关资料,求指导,谢谢!
呵呵,序列化保存文档,是每一本MFC书中必讲的内容。
设置扩展名,修改文档模板字符串即可,一般是IDR_xxxxTYPE,搜“文档模板字符串”可以找到相关资料,一般是第三个和第四个\n后面加“图片(*.bmp)”这样的东西。
序列化资料很多,自己搜,几句话说不明白,你只要记住,你要保存的东西放到文档类的CSerialize中,保存就自动保存了。
自己写保存也很方便(当然是你熟悉的情况下,呵呵)不过默认保存做的很严谨,这个学习一下有好处,对比来说,肯定使用默认保存代码少,毕竟MFC已经完成了大量的工作。
一个序列化的例子: