两种创建CArchive对象
有两种创建 CArchive 对象:
一 CArchive 对象的隐式创建将结构
CArchive 对象显式创建的
一 CArchive 对象的隐式创建将结构
最常见且最简单,方法是让框架会为您创建一 CArchive 对象表示保存,保存文档,并在 " 文件 " 菜单上的命令。
这就是 " 框架时,将执行应用程序的用户发出另存为从 " 文件 " 菜单中的命令:
存在 另存为 对话框并从用户那里获取文件名。
打开用户指定的文件作为 CFile 对象。
创建指向此 CFile 对象的一 CArchive 对象。在创建 CArchive 对象,则框架将架构 “存储” (写入,序列化),使用 “负载相对” (读取,反序列化)。
在您的 CDocument派生类调用 Serialize 函数定义,并对 CArchive 对象。
您的文件的 Serialize 功能再到 CArchive 对象的写入数据,如中所述短。在从您的 Serialize 函数返回,框架销毁 CArchive 对象并 CFile 对象。
因此,因此,如果您有框架创建您的 CArchive 对象文档,必须执行将实现文档的 Serialize 功能编写并在存档读取的所有。您还必须实现所有 CObject的 Serialize - 文档的 Serialize 功能直接或间接又序列化的派生对象。
CArchive 对象显式创建的
除了序列化,则可能需要 CArchive 对象时,文档外通过框架,与其他场合。例如,您可能希望向/从剪贴板序列化数据,由 CSharedFile 对象。或者,您可能希望提供保存与框架提供的一个不同的文件使用用户界面。在这种情况下,可以显式创建 CArchive 对象。使用下面的过程中,将执行此框架的方式,。
显式创建 CArchive 对象
构造一 CFile或对象派生的 CFile 对象。
如下面的示例所示,传递给构造函数的 CFile 对象 CArchive的,例如:
CFile theFile; theFile.Open(_T("CArchive__Test.txt"), CFile::modeCreate | CFile::modeWrite); CArchive archive(&theFile, CArchive::store);
为 CArchive 构造函数的第二个参数是指定的枚举值存档是否为存储或加载数据将使用来回文件。对象的 Serialize 功能通过调用 IsStoring 功能检查此状态存档对象。
在完成存储环境或数据加载到/从 CArchive 对象,将其关闭。虽然 CArchive (和) CFile对象将自动关闭存档 (和文件),最好显式做,因为它是由错误增加还原变得更容易。有关错误处理的更多信息,请参见中的文章 异常:捕获和删除异常。
关闭 CArchive 对象
下面的示例演示如何关闭 CArchive 对象:
archive.Close(); theFile.Close();