더북(TheBook)

[중복 창 띄우기] 메뉴는 오직 COMMAND 메시지만 처리할 것이며, 이를 처리할 클래스로는 CImageToolDoc을 선택하자. 이는 사용자가 ‘중복 창 띄우기’ 메뉴를 선택하는 이벤트를 CImageToolDoc 클래스에서 처리하겠다는 의미이다. 함수 처리기 이름은 메뉴 ID를 참조하여 자동으로 결정되며, 중복 창 띄우기 메뉴에 대한 처리기 함수의 이름은 OnWindowDuplicate이다. UPDATE_COMMAND_UI 메시지에 대한 이벤트 처리는 잠시 뒤 복사 및 붙여넣기 기능을 구현할 때 따로 설명할 것이다. 지금까지 그림과 말로 설명한 ‘중복 창 띄우기’ 이벤트 처리기 추가 방법을 표 5-6에 함축적으로 나타내었다. 이후에 메뉴 항목에 대한 이벤트 처리기 추가가 필요할 때는 표 5-6과 같은 형태로 설명을 대체할 것이다.

표 5-6 [중복 창 띄우기] 메뉴 이벤트 처리기 정보

명령 이름(ID)

처리 클래스

메시지 형식

처리기 이름

ID_WINDOW_DUPLICATE

CImageToolDoc

COMMAND

OnWindowDuplicate

이제 하단의 [추가 및 편집] 버튼을 클릭하면 편집 창에 CImageToolDoc 클래스의 OnWindowDuplicate 함수가 나타난다. OnWindowDuplicate 함수에 입력할 코드는 소스 5-13에 나타내었다.

소스 5-13 [중복 창 띄우기] 메뉴 이벤트 처리 함수(ImageToolDoc.cpp)
void CImageToolDoc::OnWindowDuplicate()
{
    AfxNewBitmap(m_Dib);
}

OnWindowDuplicate 함수에서는 단순히 m_Dib를 인자로 사용하여 AfxNewBitmap 전역 함수를 호출하고 있다. AfxNewBitmap 함수는 인자로 넘어온 영상을 새 창으로 띄워주는 역할을 수행하도록 만들어 놓은 전역 함수이다. 앞에서 영상을 새 창으로 띄우기 위한 다양한 작업을 수행한 덕분에 OnWindowDuplicate 함수의 구현은 간단하게 완성할 수 있었다.

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