삽이 부서질 때까지 삽질

[MFC] 구조 및 기본 클래스 본문

MFC

[MFC] 구조 및 기본 클래스

xinfo 2016. 12. 1. 20:09

MFC  구조는 검정 화살표

MFC  기본 클래스는 주황 화살표



구조는 가장 밖에 있는게 프레임 윈도우 또는 메인 윈도우라고 부르며, 클라이언트 부분은 툴바, 뷰, 상태바가 존재한다.

프레임 윈도우와 뷰는 부모 - 자식 관계으로 이루어져 있다.


기본 클래스는 3가지로 이루어져있는데 각각 응용 프로그램 클래스, 프레임 윈도우클래스, 뷰 클래스 이다.

응용 프로그램 클래스 

프레임 윈도우 생성, 메세지 루프 제공 

프레임 윈도우 클래스 

프레임 윈도우 기능 제공, 뷰 생성 

뷰 클래스 

뷰 기능 제공 


첫 사진에 나온 실행 파일의 소스들이다.


SimpleToolbar.CPP 에는 BEGIN_MESSAGE_MAP(클래스 이름, 베이스 클래스 이름) 매크로와 END_MESSAGE_MAP() 매크로 사이에 윈도우 메세지와 메세지 지 핸들러를 연결하기 위한 매크로를 정의한다. (메세지 생성하고 리소스 생성하면 알아서 처리 해주지만...)



그리고 SetRegistryKey(이름) 가 있는데 프로그램 관려 정보가 HKCU\Software\[이름] 위치에 저장이 된다.


프레임 윈도우 객체를 동적 할당하고 프레임 윈도우를 생성한 뒤 윈도우 객체와 연결한다. 

이때 메뉴, 아이콘 등 리소스 정보가 필요한데 이걸 LoadFrame 첫번째 인자가 리소스 정보를 제공해주는 역할을 한다.


 IDR_MAINFRAME에는 아래와 같이 여러 개의 리소스를 대표하는 ID가 선언 되어 있다.



MainFrm.cpp 에서 처음에 보이는 건 ON_WM_CREATE 와 ON_WM_SETFOCUS 다.


ON_WM_CREATE 는 윈도우가 처음 생성될 때 발생하는 메세지이다.

ON_WM_SETFOCUS는 키보드 메세지를 받을 때 발생한다.

이외에도 프레임 클래스에서 발생하는 메세지들을 여기에 선언한다. (이것도 자동으로 선언이 되더라...)


마지막으로 ChildView.cpp 다.

뷰 클래스는 화면에 데이터를 출력하거나 사용자 입력을 받을 때 사용하는 함수들을 정의한 함수이다.


ON_WM_PAINT 는 WM_PAINT 메세지와 OnPaint 함수를 연결한다.


OnPaint 함수는 WM_PAINT 메세지를 처리한다. 이 함수는 프로그램 뷰를 담당하여 출력을 해준다.



지금까지 기본적인 MFC 구조와 클래스를 알아 보았습니다~

내용이 많이 빠졌겠지만...

덧글로 알려주시면 감사하겠습니다!!

물론 틀린점도 받아요!!

Comments