[乱]mfc与sdk笔记[十]
文档,串行化,类数据永久保存(或者说内存)。很直白的东西,不知道为什么教程老是绕来绕去弄的我看了几次才明白怎么回事。小笔记。
- 文件读写CArchive类,串行化
- //写入
- CFile file("1.txt",CFile::modeCreate | CFile::modeWrite);
- CArchive ar(&file,CArchive::store);
- int i=4;
- char ch='a';
- float f=1.3f;
- CString str("abc");
- ar<<i<<ch<<f<<str;
- //读取
- CFile file("abc.txt",CFile::modeRead);
- CArchive ar(&file,CArchive::load);
- int i;
- char ch;
- float f;
- CString str;
- CString strResult;
- ar>>i>>ch>>f>>str;
- strResult.Format("%d,%c,%f,%s",i,ch,f,str);
- String Table中IDR_MAINFRAME字符串资源中各子串的含义
- (1)CDocTemplate::windowTitle,主窗口标题栏上的字符串,MDI程序不需要指定,将以IDR_MAINFRAME字符串为默认值。
- (2)CDocTemplate::docName,缺省文档的名称。如果没有指定,缺省文档的名称是无标题。
- (3)CDocTemplate::fileNewName,文档类型的名称。如果应用程序支持多种类型的文档,此字符串将显示在”File/New”对话框中。如果没有指定,就不能够在”File/New”对话框处理这种文件。
- (4)CDocTemplate::filterName,文档类型的描述和一个适用于此类型的通配符过滤器。这个字符串将出现在“File/Open”对话框中的文件类型列表框中。要和CDocTemplate::filterExt一起使用。
- (5)CDocTemplate::filterExt,文档的扩展名。如果没有指定,就不能够在“File/Open”对话框中处理这种文档。要和CDocTemplate::filterName一起使用。
- (6)CDocTemplate::regFileTypeId,如果你以::RegisterShellFileTypes向系统的注册表注册文件类型,此值会出现在HEY_CLASSES_ROOT之下成为其子项,并仅供Windows内部使用。如果没有指定,这种文件类型就无法注册。
- (7)CDocTemplate::regFileTypeName,这也是存储在注册表中的文件类型名称。它会显示于程序中用以访问注册表的对话框内。
- 创建一个可串行化类详细参考msdn
- //1.从CObject派生
- class CMySerialize : public CObject
- {
- DECLARE_SERIAL(CMySerialize)
- IMPLEMENT_SERIAL(CMySerialize,CObject,1)
- //2.覆盖Serialize函数
- }
-
- GetFirstViewPosition(); //得到关于文档对象来说的第一个视类对象的指针。
- CObArray类,结合宏支持串行化转储元素