2.4.1 클래스 마법사
1998년에 출시되었던 Visual C++ 6.0에는 클래스 마법사Class Wizard라는 기능이 있어서 이를 이용하여 메뉴 선택 이벤트 처리, 윈도우 메시지 처리 이벤트 추가, 가상 함수 재정의, 클래스 멤버 함수 및 멤버 변수 추가 등의 다양한 작업을 수행할 수 있었다. 그러나 Windows 환경이 .NET으로 바뀌고 Visual Studio 또한 Visual Studio .NET이라는 이름으로 통합되면서 Visual C++에서만 사용되던 클래스 마법사가 사라지고 대신 속성 창이 그 기능을 대체하게 되었다. 그러나 속성 창에 익숙하지 않던 Visual C++ 개발자들은 여전히 클래스 마법사를 원하였고, 이를 의식한 것인지 Microsoft는 Visual Studio 2012 버전부터 다시 새로운 모습의 클래스 마법사를 지원하기 시작하였다. 속성 창 기능도 여전히 계속 지원하기 때문에 결국 클래스 마법사 기능 부활은 개발자에게 더 많은 개발 방법 선택권을 부여하게 된 셈이다.
클래스 마법사를 실행하려면 Visual Studio 메뉴 중에서 [프로젝트] > [클래스 마법사...]를 선택하면 된다. 단축키로는 기본적으로 Ctrl+Shift+X가 지정되어 있다. 클래스 마법사는 그 사용 빈도가 매우 높기 때문에 가급적이면 단축키를 외워두는 것이 좋다. 그림 2-41은 클래스 마법사를 실행한 모습이다.
클래스 마법사의 상단에서는 작업에 필요한 프로젝트와 클래스를 선택할 수 있다. 이 책에서 만드는 모든 프로그램은 하나의 솔루션에 하나의 프로젝트만 있기 때문에 프로젝트를 변경할 일은 없을 것이다. 중요한 것은 대상 클래스를 제대로 선택하는 것이다. 간혹 클래스 마법사에서 클래스 이름을 제대로 지정하지 않아서 원치 않는 클래스에 특정 기능을 추가하는 실수를 하는 경우가 있기 때문에 주의해야 한다.
클래스 마법사에서 할 수 있는 작업들은 명령, 메시지, 가상 함수, 멤버 변수, 메서드로 구성된 다섯 개의 탭을 선택하여 이루어진다. 명령 탭에서는 보통 프로그램에 추가한 메뉴 항목에 대한 이벤트 처리기를 추가할 수 있다. 명령 탭을 선택하고, 개체 ID 목록 중에서 특정 메뉴 항목에 대한 ID를 선택하면 오른편 메시지 항목에서 COMMAND와 UPDATE_COMMAND_UI를 선택할 수 있다. COMMAND는 해당 메뉴를 선택했을 때의 이벤트이고, UPDATE_COMMAND_UI는 해당 메뉴 항목이 화면에 나타나야 할 때 발생하는 이벤트이다. UPDATE_COMMAND_UI 이벤트 처리기는 주로 메뉴 항목에 체크 표시를 한다거나 활성화/비활성화 등의 UI 표시를 하기 위한 용도로 사용된다. 예를 들어 CFirstDoc 클래스에서 [편집] > [복사] 메뉴를 선택했을 때의 이벤트 처리기를 추가하려면 그림 2-42와 같이 선택한 후, 우측의 [처리기 추가...] 버튼을 클릭하면 된다. 또는 메시지 항목에서 COMMAND를 더블 클릭하여도 동일하게 동작한다.