MFC学习笔记6 CArchive使用和文档类Serialize函数

一。CArchive

新建两个菜单项,创建write和read消息处理函数

 1 //写文件
 2 void CMainFrame::OnCarchiveWrite()
 3 {
  
 4     // TODO: 在此添加命令处理程序代码
 5     CFile file;
 6     bool is_ok=file.Open(TEXT("./demo.txt"), CFile::modeCreate | CFile::modeWrite);
 7     if(!is_ok)
 8     {
 9         return;
10     }
11     //和CArchive管理
12     //CArchive对象是数据流,文件和CArchive绑定在一起。
13     //store 存储,写
14     CArchive ar(&file, CArchive::store);
15     //和cout一样
16     int a = 10;
17     CString str = TEXT("abc");
18     TCHAR ch = 't';
19     //数据流向ar,ar指向文件
20     ar << a << str << ch;
21     ar.Close();//断开数据流与文件关联
22     file.Close();//关闭文件
23 }
24 
25 //读文件
26 void CMainFrame::OnCarchiveRead()
27 {
28     // TODO: 在此添加命令处理程序代码
29     CFile file;
30     bool is_ok = file.Open(TEXT("./demo.txt"), CFile::modeRead);
31     if (!is_ok)
32     {
33         return;
34     }
35     //和CArchive管理
36     //CArchive对象是数据流,文件和CArchive绑定在一起。
37     //load加载,读
38     CArchive ar(&file, CArchive::load);
39     int a ;
40     CString str;
41     TCHAR ch;
42     //数据流向变量
43     ar >> a >> str >> ch;
44     ar.Close();//断开数据流与文件关联
45     file.Close();//关闭文件
46 }

二。文档类Serialize函数

void CMFCApplication6Doc::Serialize(CArchive& ar)

在点击保存和打开时会调取此处的代码

 1 void CMFCApplication6Doc::Serialize(CArchive& ar)
 2 {
 3     if (ar.IsStoring())
 4     {
 5         // TODO:  在此添加存储代码
 6         CString str = TEXT("1111");
 7         int a = 250;
 8         ar << str << a;
 9     }
10     else
11     {
12         // TODO:  在此添加加载代码
13         CString str;
14         int a;
15         ar >> str >> a;
16         CString buf;
17         buf.Format(TEXT("%s,%d"), str, a);
18         AfxMessageBox(buf);
19     }
20 }
原文地址:https://www.cnblogs.com/sclu/p/11573406.html