MFC-직렬화
Serialization디스크 파일과 같은 영구 저장 매체에서 개체를 쓰거나 읽는 프로세스입니다. 직렬화는 프로그램 실행 중 또는 실행 후에 구조화 된 데이터 (예 : C ++ 클래스 또는 구조)의 상태를 유지하려는 상황에 이상적입니다.
파일 처리를 수행 할 때 값은 일반적으로 기본 유형 (char, short, int, float 또는 double)입니다. 같은 방식으로 한 번에 하나씩 여러 값을 개별적으로 저장할 수 있습니다. 이 기술은 클래스에서 (변수로) 생성 된 객체를 포함하지 않습니다.
MFC 라이브러리는 직렬화에 대한 높은 수준의 지원을 제공합니다. Serialize () 멤버 함수가 장착 된 대부분의 MFC 클래스의 조상 인 CObject 클래스로 시작합니다.
새 MFC 프로젝트를 만들어 간단한 예를 살펴 보겠습니다.
Step 1 − TODO 라인을 제거하고 다음 스냅 샷과 같이 대화 상자를 디자인합니다.
Step 2− 모든 편집 컨트롤에 대한 값 변수를 추가합니다. 언급 된 Emp ID 및 Age의 경우 값 유형은 다음 스냅 샷에 표시된대로 정수입니다.
Step 3 − 두 버튼에 대한 이벤트 핸들러를 추가합니다.
Step 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);
};
Step 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;
}
Step 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();
}
Step 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);
}
Step 8 − 위 코드를 컴파일하여 실행하면 다음과 같은 출력이 나타납니다.
Step 9 − 모든 필드에 정보를 입력하고 저장을 클릭하고이 프로그램을 닫습니다.
Step 10− 데이터를 저장합니다. 응용 프로그램을 다시 실행하고 열기를 클릭합니다. 직원 정보를로드합니다.