一。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 }