영상을 새 창으로 띄우기 위해 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 함수가 호출되게 된다.

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