더북(TheBook)

영상을 새 창으로 띄우기 위해 ImageTool.cpp 파일에 추가해야 하는 소스 코드는 소스 5-11에 나타내었다.

소스 5-11 영상을 새 창으로 띄우기 위해 ImageTool.cpp 파일에 추가한 코드(ImageTool.cpp)

#include "ImageToolView.h"

#include ".\IppImage\IppDib.h"

CImageToolApp::CImageToolApp()
    : m_pNewDib(NULL)
{
    …
}

…

// CImageToolApp 메시지 처리기

// 영상 새 창에 띄우기 전역 함수 정의
void AfxNewBitmap(IppDib& dib)
{
    theApp.m_pNewDib = &dib;
    AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_NEW);
}

CImageToolApp 클래스의 생성자에서는 새로 추가한 멤버 변수 m_pNewDibNULL로 초기화하는 코드를 추가하였다. 소스 5-11 맨 아래에 나와 있는 AfxNewBitmap 함수를 주의 깊게 살펴보도록 하자. theApp라는 변수는 ImageTool.cpp 파일에 선언된 CImageToolApp 클래스의 인스턴스 이름이다. 이 변수를 이용하면 CImageToolApp 클래스의 멤버 변수 또는 멤버 함수에 자유롭게 접근할 수 있다. CImageToolApp 클래스에 접근하기 위해 AfxGetApp 전역 함수를 사용할 수도 있지만, 여기서는 간단하게 theApp 전역 변수를 사용하였다. theApp 변수를 이용하여 CImageToolApp 클래스의 멤버 변수 m_pNewDib에 인자로 넘겨받은 dib 객체의 주소를 할당하였다. 그리고 SendMessage 함수를 이용하여 파일 새로 만들기 명령을 강제로 발생시켰다. 앞에서 설명한 것처럼 이 문장이 호출되면 자동으로 CImageToolDoc 클래스의 OnNewDocument 함수가 호출되게 된다.

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