MFC - Serializzazione
Serializationè il processo di scrittura o lettura di un oggetto su o da un supporto di memorizzazione persistente come un file su disco. La serializzazione è ideale per le situazioni in cui si desidera mantenere lo stato dei dati strutturati (come classi o strutture C ++) durante o dopo l'esecuzione di un programma.
Quando si esegue l'elaborazione del file, i valori sono in genere di tipi primitivi (char, short, int, float o double). Allo stesso modo, possiamo salvare individualmente molti valori, uno alla volta. Questa tecnica non include un oggetto creato da (come variabile di) una classe.
La libreria MFC dispone di un livello elevato di supporto per la serializzazione. Inizia con la classe CObject che è l'antenata della maggior parte delle classi MFC, dotata di una funzione membro Serialize ().
Esaminiamo un semplice esempio creando un nuovo progetto MFC.
Step 1 - Rimuovere la riga TODO e progettare la finestra di dialogo come mostrato nella seguente istantanea.
Step 2- Aggiungi variabili di valore per tutti i controlli di modifica. Per Emp ID e Age menzionati, il tipo di valore è un numero intero come mostrato nella seguente istantanea.
Step 3 - Aggiungi il gestore di eventi per entrambi i pulsanti.
Step 4- Aggiungiamo ora una semplice classe Employee, che dobbiamo serializzare. Ecco la dichiarazione della classe Employee nel file di intestazione.
class CEmployee : public CObject {
public:
int empID;
CString empName;
int age;
CEmployee(void);
~CEmployee(void);
private:
public:
void Serialize(CArchive& ar);
DECLARE_SERIAL(CEmployee);
};
Step 5 - Ecco la definizione della classe Employee nel file sorgente (* .cpp).
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;
}
Step 6 - Ecco l'implementazione del gestore di eventi del pulsante Salva.
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();
}
Step 7 - Ecco l'implementazione del gestore di eventi del pulsante Apri.
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);
}
Step 8 - Quando il codice sopra è stato compilato ed eseguito, vedrai il seguente output.
Step 9 - Inserisci le informazioni in tutti i campi e fai clic su Salva e chiudi questo programma.
Step 10- Salverà i dati. Esegui di nuovo l'applicazione e fai clic su Apri. Caricherà le informazioni sui dipendenti.