First 프로젝트에서 사용되는 각 클래스들의 역할에 대하여 표 2-2에 간략히 정리하였다. 표 2-2에서 설명한 내용은 MFC를 이용한 프로그래밍을 위해서는 반드시 숙지하고 있어야 한다.
클래스 이름 |
설명 |
CFirstApp |
First 프로그램의 전체를 관리하는 클래스이다. 프로그램 동작 시 오직 하나의 인스턴스만 생성된다. 도큐먼트 템플릿(document template), 메인 프레임 윈도우 등을 생성한다. |
CMainFrame |
메인 프레임 윈도우의 기능을 담당한다. 기본적으로 제목 표시줄, 메뉴, 툴바, 상태바, 창의 경계 등으로 구성된다. |
CChildFrame |
차일드 프레임 윈도우의 기능을 담당한다. 제목 표시줄, 창의 경계 등으로 구성된다. |
CFirstDoc |
데이터의 보관 및 관리를 담당한다. 다중 문서 인터페이스인 경우 여러 개의 인스턴스가 생성될 수 있다. |
CFirstView |
차일드 프레임 윈도우 안의 흰색 영역을 표현한다. 보통 CFirstDoc 클래스를 참조하여 데이터의 화면 출력을 담당한다. |
CAboutDlg |
프로그램 버전 등의 정보를 보여주는 대화 상자다. |
그림 2-32는 도큐먼트-뷰-프레임Document-View-Frame 구조를 개괄적으로 설명하는 그림이다. 이는 Java와 같은 언어에서는 모델-뷰-컨트롤러MVC, Model-View-Controller라고 이야기하는 구조와 동일한 개념이다. 도큐먼트-뷰-프레임 구조는 프로그램 개발 시 각각의 구조에 대한 코드 작성을 독립적으로 할 수 있기 때문에 편리하다. 즉, 도큐먼트 클래스에서는 데이터의 보관 및 관리에 대한 코드만을 작성하고, 뷰 클래스에서는 데이터를 화면에 나타내는 방법에 대한 코드만을 작성한다. 프레임 클래스에서는 메뉴 및 툴바 처리, 윈도우 이동 및 크기 변경 같은 윈도우 동작 등의 역할을 담당한다.
그림 2-33은 각각의 클래스에서 다른 클래스에 접근하기 위해 사용해야 하는 함수들을 보여준다. 이름이 Afx로 시작되는 함수들은 전역 함수로써, 프로그램 소스 코드 어느 곳에서든 사용할 수 있다. 즉, 소스 코드 어느 곳에서든 CFirstApp 클래스 인스턴스의 주소를 얻고 싶으면 AfxGetApp() 함수를 호출하면 된다. CFirstDoc 클래스에서 CFirstView 클래스 인스턴스의 주소를 얻고 싶으면 GetFirstViewPosition() 함수와 GetNextView() 함수를 조합하여 사용해야 한다. 반대로 CFirstView 클래스에서 CFirstDoc 클래스에 접근하려면 GetDocument() 함수를 사용하면 된다.