[乱]mfc与sdk笔记[十]

文档,串行化,类数据永久保存(或者说内存)。很直白的东西,不知道为什么教程老是绕来绕去弄的我看了几次才明白怎么回事。小笔记。

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

Tags: , , ,

打开了评论功能,但是需要被审核,所以请耐心等待。