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     else11     {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 }
计算机