본문 바로가기
New/MFC 윈도우 프로그래밍

5. 도큐먼트 파일 입출력 및 템플릿 (1)

by onenewkong 2024. 12. 19.

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