더북(TheBook)

클래스 마법사의 메시지 탭에서는 윈도우 메시지에 대한 이벤트 처리기를 추가할 수 있다. Windows에서 발생하는 모든 이벤트는 윈도우 메시지 형태로 프로그램에 전달된다. 윈도우 메시지는 모두 ‘WM_’로 시작하며 고유한 정숫값을 가지도록 정의되어 있다. 예를 들어 윈도우가 생성될 때는 WM_CREATE 메시지가 발생하고, 마우스의 왼쪽 버튼을 누르면 WM_LBUTTONDOWN 메시지가 발생한다. 만약 WM_LBUTTONDOWN 메시지에 대한 이벤트 처리기를 추가하려고 한다면 메시지 항목들 중에서 WM_LBUTTONDOWN을 선택하고 오른편의 [처리기 추가...] 버튼을 누르거나 WM_LBUTTONDOWN을 더블 클릭하면 된다. CFirstView 클래스에 WM_LBUTTONDOWN 메시지에 대한 이벤트 처리기를 추가한 모습을 그림 2-43에 나타내었다. 윈도우 메시지 처리 함수 이름은 ‘On’이라는 접두사와 윈도우 메시지 이름을 조합하여 결정된다. 예를 들어 WM_LBUTTONDOWN 메시지 처리 함수 이름은 OnLButtonDown으로 결정된다. 참고로 윈도우 메시지는 CWnd 클래스를 상속받은 클래스에서만 처리할 수 있으며 CFirstApp 또는 CFirstDoc 클래스처럼 CWnd를 상속받지 않은 클래스는 윈도우 메시지를 처리할 수 없다.

그림 2-43 클래스 마법사 - 메시지 탭

가상 함수 탭에서는 기본 클래스에 정의되어 있는 가상 함수를 재정의할 수 있다. MFC는 프로그램의 동작과 관련된 다양한 기능을 가상 함수로 만들어두고, 사용자가 만든 프로그램에서 이를 재정의하여 사용할 수 있도록 하였다. 그림 2-44는 CFirstDoc 클래스에 대해 가상 함수 탭을 선택한 화면이다. ‘재정의된 가상 함수’ 목록을 보면 AssertValid, Dump, OnNewDocument, Serialize 등의 함수가 이미 재정의되어 굵은 글씨로 나타나 있다. 만약 First 프로그램에서 파일을 열려고 할 때 특정 동작을 수행하려고 한다면 ‘가상 함수’ 목록 중에서 OnOpenDocument 함수를 추가하면 된다.

그림 2-44 클래스 마법사 - 가상 함수 탭

클래스 마법사에서 멤버 변수 탭과 메서드 탭은 상대적으로 사용 빈도가 낮은 편이다. 다만 대화 상자 클래스를 만들 경우 대화 상자에 추가한 컨트롤들에 대한 멤버 변수를 추가할 때 멤버 변수 탭을 요긴하게 사용할 수 있다. 메서드는 멤버 함수를 의미하며 메서드 탭에서는 멤버 함수를 추가 또는 삭제하는 기능을 제공한다.

지금까지 Visual Studio 2015에서 제공하는 클래스 마법사 기능에 대해 살펴보았다. 이 책의 많은 부분에서 클래스 마법사를 이용하여 코드를 추가할 것이다. 그러나 경우에 따라 클래스 마법사가 아닌 다른 방법을 이용하여 이벤트 처리기를 추가하는 것이 편리할 때도 있으니 상황에 맞게 클래스 마법사를 활용할 것임을 일러둔다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.