5.1 도큐먼트
1) CDocument 클래스
- 템플릿을 구성하는 네 개의 클래스 중 데이터를 관리하는 클래스
- 프로그램이 사용하는 데이터를 만들고, 읽어오고, 저장하는 역할 담당
- CDocument 파생 클래스에는 새로운 도큐먼트를 만드는 OnNewDocument() 함수와 도큐먼트의 내용을 디스크로부터 읽어오고 저장하는 Serialize() 함수가 정의되어 있음
- 파일에 데이터를 저장하거나 파일로부터 데이터를 읽기 위해서는 CDocument 파생 클래스에 OnSaveDocument() 함수나 OnOpenDocument() 함수를 오버라이딩하여 코드를 작성함
2) CArchive 클래스
- 도큐먼트의 데이터를 읽고 쓰기 위한 이진 삽입(<<) 및 이진 추출(>>) 연산자를 정의
- CArchive 클래스에서 저장의 의미는 메모리에 있는 데이터가 파일로 전송되는 것을 말하고, 열기의 의미는 파일에 있는 데이터가 메모리로 전송되는 것을 말함
- CArchive 클래스는 CObject 클래스로부터 상속된 클래스로써 객체를 읽고 쓰기 위한 멤버 함수인 ReadObject() 함수와 WriteObject() 함수를 가지고 있음
- IsStoring(): 현재 데이터를 저장하는 중인지, 데이터를 읽어오는 중인지를 알아내는 함수
- Serialize(): 인자로 CArchive 클래스의 인스턴스인 ar이 넘어옴
- 데이터 저장 시 삽입 연산자를 이용하여 저장하고자 하는 데이터를 ar로 밀어 넣음
- 데이터를 읽어올 때는 추출 연산자를 이용하여 ar로부터 꺼내옴
- 이 때, CArchive 클래스의 객체에 저장하거나 읽어 들이는 데이터의 순서는 같아야 함
- OnOpenDocument() 함수 또는 OnSaveDocument() 함수에서 자동으로 호출해줌
3) Serialize() 함수
- 직렬화란 하드디스크와 같은 저장 매체에 데이터를 저장하고 읽어 들이는 과정을 말함
- 직렬화의 기본적인 기능은 CObject 클래스의 Serialize() 함수에 정의되어 있음
- MFC에서는 도큐먼트 클래스가 자기 자신의 데이터를 관리하므로 도큐먼트 클래스에서 Serialize() 함수를 오버라이딩하면 됨
5.2 파일 입출력
- 파일 입출력 기능은 프로그램의 가장 기본적인 기능으로 프로그램에서 만들어낸 정보를 저장 매체에 파일로 저장하는 기능과 저장해 놓은 파일을 다시 읽어오는 기능임
- 데이터를 저장하고자 할 때는 도큐먼트 클래스의 OnSaveDocument() 함수가 실행되고 CFile 클래스를 이용하여 해당하는 파일을 열어 CArchive 클래스를 통로로 데이터를 저장하게 됨
- 저장 매체로부터 데이터를 읽어올 때는 도큐먼트 클래스의 OnOpenDocument() 함수가 실행되어 CFile 클래스를 이용하여 해당하는 파일을 열어 CArchive 클래스를 통로로 데이터를 읽어오게 됨
- 파일을 저장하거나 읽어올 때 최후에 데이터가 저장되거나 읽어오는 부분은 Serialize() 함수에 의해서 설정되고, 이때 CArchive 클래스의 인스턴스가 Serialize() 함수의 인수로 사용됨
실습
'New > MFC 윈도우 프로그래밍' 카테고리의 다른 글
5. 도큐먼트 파일 입출력 및 템플릿 (2) (0) | 2024.12.29 |
---|---|
4. 대화상자 (2) (1) | 2024.12.15 |
4. 대화상자 (1) (0) | 2024.12.15 |
3. 메시지 처리 (3) (0) | 2024.12.14 |
3. 메시지 처리 (2) (0) | 2024.12.11 |