2.3.2 CFirstApp 클래스 분석
CFirstApp 클래스는 First 프로그램의 동작을 전체적으로 감독하는 핵심적인 클래스로써, 메인 프레임 윈도우를 생성하여 화면에 나타나게 만드는 작업을 담당한다. 이 클래스는 First.h와 First.cpp 파일에 구현되어 있다.
그림 2-34는 CFirstApp 클래스의 멤버 함수의 목록을 보여준다. MFC 응용 프로그램 마법사는 기본적으로 CFirstApp 클래스의 생성자 함수와 InitInstance, ExitInstance, OnAppAbout 함수를 만들어준다.
생성자 함수인 CFirstApp()에서는 특별한 작업을 수행하지 않는다. OnAppAbout 함수는 First 프로그램에서 [도움말] > [First 정보...] 메뉴 항목을 선택하였을 때 실행되는 함수로써 단순히 대화 상자를 띄워주는 역할만을 수행한다. 가장 관심을 갖고 봐야 할 멤버 함수는 InitInstance 함수로 이 함수에서는 First 프로그램을 생성하는 데 필요한 모든 작업이 수행된다. 이와 반대로 ExitInstance 함수는 First 프로그램 종료 시 마지막에 수행되는 함수이다.
CFirstApp 클래스의 InitInstance 함수의 내용을 살펴보기 전에 먼저 First 프로그램이 실행될 때 수행되는 함수의 순서에 대해 알아보도록 하자. 그림 2-35는 MFC 응용 프로그램의 실행 순서를 보여준다. MFC 응용 프로그램들은 기본적으로 CFirstApp 클래스의 상위 클래스인 CWinApp 클래스의 멤버 함수 InitInstance, Run, ExitInstance 함수를 순서대로 호출하도록 결정되어 있다. 그러나 CWinApp 클래스의 하위 클래스인 CFirstApp 클래스에 동일한 이름의 함수가 있으면 CFirstApp 클래스의 InitInstance 함수를 호출하게 된다. 그러므로 First 프로그램에 필요한 초기화 작업 코드를 CFirstApp 클래스의 InitInstance 함수에 작성하는 것이다.
InitInstance 함수가 종료된 후에는 Run 함수가 자동으로 호출된다. Run 함수에서는 응용 프로그램에서 발생하는 모든 메시지 또는 명령을 처리한다. 만약 사용자가 프로그램을 종료하도록 명령을 내린 경우에는 Run 함수에서 빠져 나와 ExitInstance 함수가 호출된다.