- 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 - 它將儲存資料。再次執行應用程式並單擊“開啟”。它將載入員工資訊。
廣告