2014년 11월 19일 수요일



MFC 파일 관련 클래스

CFile 파일 입출력을 담당( 열기 -> 입출력 -> 닫기 )

CFile::Open() 파일을 연다
CFile::Close() 파일을 닫는다.
CFile::Read() 파일의 현재 위치에서 데이터를 읽어 들인다.
CFile::Write() 파일의 현재 위치에 데이터를 쓴다.
CFile::Seek() 파일의 현재 위치를 변경한다.
CFile::GetLength() 파일의 길이를 알아낸다.

CArchive CFile을 더 편리하게 사용. 연산자 오버로딩을 통해 Write(<<), Read (>>) 가능


CFileDialog 파일 명을 입력받기 위해 파일 대화상자를 출력


Serialization( 연속화 ) MFC Application Wizard를 통해 생성된 클래스 안에 Serialize()는 파일 입출력을 지원한다.
MFC 내부 동작은 CFileDialog > CFile > CArchive > Serialize 순서이다.
하지만 Serialize()보단 주로 CFileDialog, CFile을 사용한다.


MemDC
 - CreateMemDC() 메모리DC를 사이즈에 맞게 생성 new로 CDC와 CBitmap을 할당하여 맴버 변수에 저장
 - DestroyMemDC() 메모리 DC 파괴
 - DrawMemDC() 메모리 DC를 다른 DC화면에 출력
 - ReSize() 비트맵 크기 재설정



Dialog는 크게 모달 다이알 로그와 모달리스 다이알로그 2가지로 나뉜다.
모달 방식은 다이알로그 처리중 다른 작업이 중단되는 방식

MFC 클래스와 MFC파생 클래스를 사용하는 2가지 방법
1. 원하는 기능의 클래스가 있을 경우 바로 생성하여 사용
2. 자신이 원하는 기능과 비슷하지만 부족한 경우, 상속받은 파생클래스를 만들어 원하는 기능 추가 및 재정의한 후 파생클래스의 인스턴스를 생성하여 사용

class CMyDialog : public CDialog

MFC에서는 컨트롤 값과 변수값의 처리를 자동으로 해주고 있는데, 이를 연결만 하면 간단하게 처리가 가능하다.


UpdateData() 각 컨트롤과 멤버 변수의 데이터 동기화
BOOL UpdateData( BOOL bSaveAndValidate = TRUE );
TRUE : 컨트롤 > 변수
FALSE : 변수 > 컨트롤
대화상자 시작 시 UpdateData(FALSE) 호출

DoDataExchange() UpdateData()함수 호출시 내부적으로 호출되는 함수


Control형 멤버 변수
각 컨트롤에 Value형 변수와 Control형수를 사용할 수 있다. Control형 변수는 다이알로그가 사리자면(DoModal()호출이 사라지면) 접근이 불가능하므로 Value형 변수로 추가 되어야 한다.


다이알 로그 클래스 컨트롤의 초기 설정OnInitDialog()에서 재정의하여 사용하면된다.


통지메시지 NOTIFICATION
윈도우 메시지 중 WM_로 시작하지 않고 xxN_으로 시작한다. 이벤트 발생시 윈도우에 직접 보내지 않고 해당 윈도우의 부모 윈도우에게 전송된다. 컨트롤에 일어난 사건이 대화상자에 메시지 형태로 전달된다.

통지 메시지 이름 규칙
EditBox – EN_XXXXX
ListBox - LN_XXXXX
ComboBox - CBN_XXXX


모달리스 다이알로그
Create()를 사용하며, 모달리스의 경우 멤버 변수 또는 동적 할당하여 사용하는 것이 일반적이다.


종료는 DestoryWindow()를 호출하여 종료한다.


참고) gamecodi 이주행(master@gamecodi.com)님 글

0 개의 댓글:

댓글 쓰기