삽이 부서질 때까지 삽질
[MFC] 파일 저장 및 읽기(직렬화) 본문
간단하게 입력한 글자와 스타일 저장하는 예제를 만들볼게요.
뷰에서 도큐먼트 객체과 관리하기 때문에 [이름]DOC.h 에서 관리를 합니다.
저는 FileIOTest로 지어서 FileIOTest.Doc.h 입니다.
OnNewDocument 에서 변수를 초기화 하자
[OnNewDocument 는 파일을 새로만들기 했을 경우 자동으로 호출하는 함수이다.]
클래스 뷰에서 CFileIOTestView 에 WM_CHAR 메세지를 추가한다.
입력한 글자를 도큐먼트 객체에 저장하기 위해서 GetDocument 함수를 이용해 도큐먼트 객체의 주소를 가져오고, SetModifiedFlag 함수로 데이터가 수정된걸 도큐먼트 객체에 알린다. 마지막에는 Invalidate 함수를 사용해 WM_PAINT 메세지를 발생시킨다.
준비가 되었으니 이제 OnDraw 에 글을 출력하는 코드를 작성해보자.
여기까지만 해도 글자가 써집니다.
하지만 스타일까지 저장하기 위해서 전에 글을 쓴 메뉴를 추가하겠습니다.
기존 메뉴에 추가하기 위해 .rc 파일을 열어 추가했습니다.
이텔릭 ID는 ID_STYLE_ITALIC
밑줄 ID는 ID_STYLE_UNDERLINE
이렇게 주었습니다.
클래스 뷰로 돌아와 CFileIOTestDoc의 이벤트를 보면 메뉴에서 설정한 아이디가 나오고 커멘더를 추가합니다.
그리고 이벤트에 해당하는 코드를삽입하면 끝
이면 좋겠지만, 파일 저장 읽기를 하기 위한 코드 작성을 하자.
CObject::Serialize 에 직렬화 기능과 관련 있다. 데이터를 저장하거나 읽어오는 코드를 여기에 추가하면 된다.
'MFC' 카테고리의 다른 글
[MFC] SDI 간단 분석 (0) | 2016.12.06 |
---|---|
[MFC] 텍스트 파일이 아닌 확장 메타파일 형식으로 저장 (0) | 2016.12.06 |
[MFC] 메뉴 명령 처리 (0) | 2016.12.02 |
[MFC] 메뉴 생성하기 (0) | 2016.12.01 |
[MFC] 구조 및 기본 클래스 (0) | 2016.12.01 |