
- MFC 教程
- MFC - 首頁
- MFC - 概述
- MFC - 環境設定
- MFC - VC++ 專案
- MFC - 入門
- MFC - Windows 基礎
- MFC - 對話方塊
- MFC - Windows 資源
- MFC - 屬性表
- MFC - Windows 佈局
- MFC - 控制元件管理
- MFC - Windows 控制元件
- MFC - 訊息與事件
- MFC - ActiveX 控制元件
- MFC - 檔案系統
- MFC - 標準 I/O
- MFC - 文件檢視
- MFC - 字串
- MFC - CArray
- MFC - 連結串列
- MFC - 資料庫類
- MFC - 序列化
- MFC - 多執行緒
- MFC - 網際網路程式設計
- MFC - GDI
- MFC - 庫
- MFC 有用資源
- MFC - 快速指南
- MFC - 有用資源
- MFC - 討論
MFC - 序列化
序列化是指將物件寫入或讀取到永續性儲存介質(如磁碟檔案)的過程。序列化非常適合需要在程式執行期間或之後維護結構化資料(例如 C++ 類或結構)狀態的情況。
在執行檔案處理時,值通常是原始型別(char、short、int、float 或 double)。同樣,我們可以一次一個地單獨儲存許多值。此技術不包括從(作為…的變數)類建立的物件。
MFC 庫對序列化具有高度的支援。它從 CObject 類開始,它是大多數 MFC 類的祖先,該類配備了 Serialize() 成員函式。
讓我們透過建立一個新的 MFC 專案來了解一個簡單的示例。
步驟 1 - 刪除 TODO 行並設計您的對話方塊,如下面的快照所示。

步驟 2 - 為所有編輯控制元件新增值變數。對於提到的員工 ID 和年齡,值型別為整數,如下面的快照所示。

步驟 3 - 為這兩個按鈕新增事件處理程式。
步驟 4 - 現在讓我們新增一個簡單的 Employee 類,我們需要對其進行序列化。這是標頭檔案中 Employee 類的宣告。
class CEmployee : public CObject { public: int empID; CString empName; int age; CEmployee(void); ~CEmployee(void); private: public: void Serialize(CArchive& ar); DECLARE_SERIAL(CEmployee); };
步驟 5 - 這是原始檔 (*.cpp) 中 Employee 類的定義。
IMPLEMENT_SERIAL(CEmployee, CObject, 0) CEmployee::CEmployee(void) { } CEmployee::~CEmployee(void) { } void CEmployee::Serialize(CArchive& ar) { CObject::Serialize(ar); if (ar.IsStoring()) ar << empID << empName << age; else ar >> empID >> empName >> age; }
步驟 6 - 這是“儲存”按鈕事件處理程式的實現。
void CMFCSerializationDlg::OnBnClickedButtonSave() { // TODO: Add your control notification handler code here UpdateData(TRUE); CEmployee employee; CFile file; file.Open(L"EmployeeInfo.hse", CFile::modeCreate | CFile::modeWrite); CArchive ar(&file, CArchive::store); employee.empID = m_id; employee.empName = m_strName; employee.age = m_age; employee.Serialize(ar); ar.Close(); }
步驟 7 - 這是“開啟”按鈕事件處理程式的實現。
void CMFCSerializationDlg::OnBnClickedButtonOpen() { // TODO: Add your control notification handler code here UpdateData(TRUE); CFile file; file.Open(L"EmployeeInfo.hse", CFile::modeRead); CArchive ar(&file, CArchive::load); CEmployee employee; employee.Serialize(ar); m_id = employee.empID; m_strName = employee.empName; m_age = employee.age; ar.Close(); file.Close(); UpdateData(FALSE); }
步驟 8 - 編譯並執行上述程式碼後,您將看到以下輸出。

步驟 9 - 在所有欄位中輸入資訊,然後單擊“儲存”並關閉此程式。

步驟 10 - 它將儲存資料。再次執行應用程式並單擊“開啟”。它將載入員工資訊。

廣告