MFC 기본 이론 & 구조

MFC 란 무엇인가.?

 

MFC는 Microsoft Foundation Classes의 약자로,
윈도우 애플리케이션을 생성하기 위해 만들어진 C++ 클래스의 라이브러리

클래스들은 윈도우 API를 캡슐화하는 윈도우 프로그래밍에 대한 객체 지향적인 접근 방식을 말한다.

윈도우 프로그램을 작성하는 과정에는 MFC 로부터 파생된 객체 또는 클래스들의 객체를 생성하여 사용하는 것이 포함 된다.

 

|MFC 표기법|
 

MFC에 있는 모든 클래스들은 CDocument 또는 CView등과 같이 C로 시작하는 이름을 가진다.
클래스를 정의하거나, MFC 라이브러리에 있는 클래스로부터 클래스를 파생 시킬 때 동일한 규칙을 사용하여 프로그램의 이해도를 높였다.
MFC 클래스의 데이터 멤버 앞에는 m_ 이 붙는다.

MFC 는 많은 변수 이름들에 있어서 헝가리안 표기법을 사용하고 있다.

 

|기본 클래스| 
 

  

Cobject

MFC의 최상위 클래스로 메모리에 클래스를 설정하는 기능을 가진 기본 클래스이다.

대부분의 클래스가 이 클래스로부터 파생되었다.

기본 클래스는 데이터를 직렬화 하고 Run-time 클래스 정보를 얻어내거나 Debugging 시에 출력 진단의 역활을 담당한다.

 

CCmdTarget

명령 관련 클래스로 윈도우 메시지를 받고, 응답하는 오브젝트 클래스들의 기본 클래스이며,
MFC의 메시지맵 아키텍처를 지원하기 위한 기저 클래스이다.

윈도우 메시지를 처리하는 MFC 클래스는 모두 CCmdTarget클래스나 CCmdTarget의 파생 클래스로부터 상속받은 클래스 이다.

 

CWinThread

하나의 윈도우를 스레드로 구동될 수 있게 하는 클래스이다.

여러가지 프로그램을 동시에 실행시킬 수 있기 때문에 MFC 프로그램이 구동되기 위하여 CwinThread 클래클래부터 상속 받는다.

 

CWinApp

윈도우 애플리케이션 클래스로 윈도우 애플리케이션 오브젝트를 생성시키는 기본 클래스이다.

 

|도큐먼트와 뷰 클래스|

 

CDocTemplate                    도큐먼트 템플릿에 대한 기본 클래스

CSingleDocTemplate          SDI 도큐먼트 템플릿

CMuiltDocTemplate            MDI 도큐먼트 템플릿

 

윈도우 애플리케이션 클래스로 윈도우 애플리케이션 오브젝트를 생성시키는 기본 클래스이다.




 <SDI 애플리케이션의 구조>  

 

<MDI 애플리케이션의 구조>

 

CDocument :

애플리케이션 내부에서 데이터를 읽고, 저장하는 기능을 가진 클래스로 애플리케애션이 지정한 도큐먼트의 기본 클래스이다. 입출력을 제공하므로 데이터의 입출력에 관한 내용은 이 클래스를 사용하는 것이 좋다.

사용자의 도큐먼트(CMyDocument)들은 이 CDocument 클래스로부터 상속받아 사용한다.

 

CView :

애플리케이션의 클라이언트 또는 작업 영역을 나타내는 클래스로 도큐먼트 안에 있는 데이터를 뷰를 통해 화면에 보일수 있도록 하는 기저 클래스이다.

CView 클래스로부터 상속받은 여러 가지 형태의 폼 윈도우들이 있다.

작업 영역으로 들어오는 메시지들을 처리 할 수 있다.

사용자뷰(CMyView)들은 이 CView 클래스로부터 상속받아 사용한다.

 

CFrameWndw

메인 프레임에 관한 윈도우 클래스로 윈도우의 외곽 경계를 정의하는 기저 클래스이다.

CWnd 클래스로부터 상속받았기 때문에 공통적으로 윈도우 메시지를 처리한다.

SDI 프로젝트 유형에서는 CFrameWnd 클래스로부터 상속받아 CMainFrame 클래스를 생성한다.

MDI 프로젝트 유형에서는 CFrameWnd 클래스부터 상속받아 CMDIFrameWnd 클래스와 CMDICHildWnd 클래스를 생성한다.

윈도우 애플리케이션 클래스로 윈도우 애플리케이션 오브젝트를 생성시키는 기본 클래스이다.

 

 

| 클래스 상호간 포인터 얻기 |

 

도큐먼트 :
응용 프로그램에 있는 데이터의 집합을 가르킨다.

 

 :  
도큐먼트 안에 저장되어 있는 어떤(모든) 데이터를 나타내는 메커니즘을 
제공하는 객체

 

도큐먼트 템플릿 : 
프로그램안에 도큐먼트 객체와 그들 각각과 관계되어 있는 윈도우 
뷰를 관리하는 객체

 

MFC는 도큐먼트와 그것의 뷰를 결합시키는 메커니즘을 포함한다.
이때 각각의 프레임 윈도우는 현재 활성화된 뷰를 나타내게 된다. 도큐먼트 객체는 그것과 관계된 뷰들에 대한 포인터들의 리스트를 자동으로 관리한다. 그리고 뷰 객체는 그것과 관계된 도큐먼트에 대한 포인터를 저장할 데이터 멤버를 갖는다. 또한, 각각의 프레임 윈도우는 현재 활성화된 뷰 객체에 대한 포인터를 저장한다. 도큐먼트, 뷰, 그리고 프레임 윈도우 사이의 관계는 도큐먼트 템플릿이라고 불리는 또 다른 MFC 클리스 객체들에 의해서 성립된다. 도큐먼트 템플릿은 프로그램 안에 도큐먼트 객체들 뿐만 아니라, 그들 각각과 관계되어 있는 윈도우와 뷰 들도 관리한다. 도큐먼트 객체들과 프레임 윈도우 객체들은 하나의 도큐먼트 템플릿 객체의 의해서 생성된다. 하나의 뷰는 하나의 프레임 윈도우 객체의 의해서 생성된다. 도큐먼트 템플릿 객체 그 자체는 어떠한 MFC 응용 프로그램에 대해서도 기본적인 응용 프로그램 객체의 의해서 생성된다.

 

  



| 응용 프로그램 클래스 | - My

 

응용 프로그램 클래스 : CMyApp

 

프레임 윈도우 클래스 : CMyWnd

 

뷰 클래스 CMyView


이것은 CMyDoc 안에 포함되어 있는 데이터가 CMyWnd 객체에 의해서 생성된 윈도우의 클라이언트영역 안에서 어떻게 나타나는가를 정의한다.

 

도큐먼트 클래스 : CMyDoc
응용 프로그램 데이터를 포함하는 도큐먼트를 정의한다.

이 글을 공유하기

댓글

Designed by JB FACTORY