来源:飞鸽传书二进制文件 MFC CArchive 实现保存
飞鸽传书 一直在在不断发展不断更新,当然 MFC CArchive 实现保存到二进制文件是必不可少的。先看一下效果图
1 BOOL Save2File() 2 { 3 BOOL bOpenFileDialog = FALSE; ---------------------------------- ① 4 BOOL bVistaStyle = FALSE; // no VistaStyle 5 TCHAR BASED_CODE szFilter[] = -------------------------------- ② 6 _T("二进制文件(*.dat)|*.dat|") 7 _T("All Files (*.*)|*.*||"); 8 CString path_and_fileName; 9 10 CFileDialog fdlg(bOpenFileDialog, _T("dat"), _T("*.dat"), ------- ③11 OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL, 0,12 bVistaStyle);13 if (IDOK == fdlg.DoModal()) {14 CFile fileSave;15 CFileException ex;16 17 path_and_fileName = fdlg.GetPathName();18 if (!fileSave.Open(path_and_fileName, CFile::modeCreate | 19 CFile::modeWrite | CFile::typeBinary, &ex)) { ------④20 TCHAR szError[1024];21 ex.GetErrorMessage(szError, 1024);22 MessageBox(NULL, szError, _T("提示"), MB_OK);23 return FALSE;24 }25 CArchive ar(&fileSave, CArchive::store); ---------------------⑤ 26 for (int i=0;i<<databuf;="" ------------------------------------------⑥28="" }29="" ar.close();30="" filesave.close();31="" }32="" 33="" return="" true;34="" }[="" size][attachimg]18[="" attachimg]
①bOpenFileDialog为FALSE,弹出对话框为File save as,若为TRUE,弹出对话框为File Open;
②文件类型过滤字符串,这个仅仅是在保存的文件类型里面可选的内容,文件过滤要在第③项里面设置;
③_T("dat"), _T("*.dat")这两个字符串设置文件过滤类型跟默认文件名,这个过滤是在选择的时候只显示过滤的文件。
④CFile::typeBinary设置允许二进制方式打开文件;
⑤根据打开的文件创建串行化对象,将ar与fileSave关联,并设置CArchive::store
⑥直接写入ar就是二进制方式对文件的写入ar<<databuf,之后注意关闭:[ size][="" align]
" ar.close();[="" filesave.close();[="" align]