MFC介面程式設計基礎(21):一個簡單的CArchive類用法的示例(Ex_Archive)
阿新 • • 發佈:2019-01-12
上一篇:MFC介面程式設計基礎(20):一個簡單的文件序列化示例(Ex_SDIArchive) | 下一篇:MFC介面程式設計基礎(22):MFC ODBC連線資料庫 |
---|
- 第一步 用MFC 應用程式嚮導建立一個預設的基於對話方塊的應用程式Ex_Archive。
- 第二步 為新建立的工程新增一個新的.h檔案, Person.h,單擊【新增】按鈕,如下圖所示。在Person.h檔案中輸入下面的程式碼:
class CPerson : public CObject { DECLARE_SERIAL(CPerson) public: virtual void Serialize(CArchive& ar); CPerson(); virtual ~CPerson(); UINT Load(void); CString m_szName ; UINT m_nAge; };
- 第三步 同上步,在專案中新增原始檔Person.cp,在Person.cpp檔案中輸入下面的程式碼:
#include "stdafx.h" #include "Person.h" IMPLEMENT_SERIAL(CPerson, CObject, 1) CPerson::CPerson() { } CPerson::~CPerson() { } void CPerson::Serialize(CArchive& ar) { if (ar.IsStoring()) { ar<<m_szName<<m_nAge; } else { ar>>m_szName>>m_nAge; } } UINT CPerson::Load() { CFile f; char buf[512]; if( !f.Open( "person.dat", CFile::shareDenyWrite|CFile::modeRead) ) return 0; else { CArchive ar( &f, CArchive::load, 512, buf ); Serialize(ar); return 1; } }
**說明:**通過2、3兩步建立了CPerson類,並且改類為可序列化的類,CPerson類的成員函式Load( )首先生成指向"person.dat"檔案的CFile物件,然後構造讀檔案的CArchive物件ar,並從檔案中讀資料完成CPerson物件的初始化。
- 第四步 編輯IDD_EX_ARCHIVE_DIALOG對話方塊資源,如下圖所示。
設定上圖控制元件的屬性如下表:
- 第五步 開啟MFC 類嚮導的成員變數頁面,確定類名是CEx_ArchiveDlg,選中所需的控制元件ID號,雙擊滑鼠。依次為下列控制元件新增成員變數,如下表所示。
- 第六步 為類CEx_ArchiveDlg新增一個CPerson類的物件m_person成員。並在Ex_ArchiveDlg.h檔案的頭部新增以下語句:
#include "person.h"
- 第七步 修改CEx_ArchiveDlg的OnInitDialog()函式在該函式中新增從檔案讀取資料並初始化m_person的程式碼:
BOOL CEx_ArchiveDlg::OnInitDialog()
{
……
if(m_person.Load())
{
this->m_szName=this->m_person.m_szName;
this->m_nAge=this->m_person.m_nAge;
this->UpdateData(FALSE);
}
else
{
AfxMessageBox("load person data fails");
}
return TRUE;
}
- 第八步 用MFC ClassWizard為按鈕IDC_SAVE新增BN_CLICKED的訊息對映,並增加下列程式碼:
void CEx_ArchiveDlg::OnSave()
{
CFile f;
char buf[512];
if( !f.Open( "person.dat",CFile::modeCreate | CFile::modeWrite) )
{
exit( 1 );
}
CArchive ar( &f, CArchive::store, 512, buf );
UpdateData();
m_person.m_nAge=this->m_nAge;
m_person.m_szName=this->m_szName;
m_person.Serialize(ar);
}
- 第九步 編譯執行並測試。
上一篇:MFC介面程式設計基礎(20):一個簡單的文件序列化示例(Ex_SDIArchive) | 下一篇:MFC介面程式設計基礎(22):MFC ODBC連線資料庫 |
---|