더북(TheBook)

9.1.4 이동 변환 메뉴 만들기

ImageTool 프로그램에 이동 변환을 위한 메뉴 항목과 메뉴 이벤트 처리 함수를 추가해보자. Visual Studio 리소스 뷰에서 IDR_ImageToolTYPE 항목을 더블 클릭하여 메뉴 편집 창에 나타나게 한 후, 그림 9-4와 같이 [이동 변환] 메뉴 항목을 추가하자. [이동 변환] 메뉴 항목의 속성은 표 9-4를 참고하라. 기존 메뉴와의 구분을 위하여 [이동 변환] 메뉴 위에 구분선을 하나 추가하는 것도 좋을 것 같다.

그림 9-4 [이동 변환] 메뉴 항목 추가
표 9-4 [이동 변환] 메뉴 항목 속성

ID

Caption

ID_IMAGE_TRANSLATION

이동 변환(&T)...

메뉴 항목을 추가하였으면 이제 이 메뉴에 대한 메뉴 이벤트 처리 함수를 추가하자. [이동 변환] 메뉴 항목에 대한 이벤트 처리기 마법사에 입력할 정보는 표 9-5를 참고하라. OnImageTranslation 함수에 추가할 소스 코드는 소스 9-3에 나타내었다.

표 9-5 [이동 변환] 메뉴 이벤트 처리기 정보

명령 이름(ID)

처리 클래스

메시지 형식

처리기 이름

ID_IMAGE_TRANSLATION

CImageToolDoc

COMMAND

OnImageTranslation

소스 9-3 이동 변환 메뉴 이벤트 처리 함수(ImageToolDoc.cpp)
#include "IppImage\IppGeometry.h"
#include "TranslateDlg.h"void CImageToolDoc::OnImageTranslation()
{
    CTranslateDlg dlg;
    if (dlg.DoModal() == IDOK)
    {
        CONVERT_DIB_TO_BYTEIMAGE(m_Dib, imgSrc)
        IppByteImage imgDst;
        IppTranslate(imgSrc, imgDst, dlg.m_nNewSX, dlg.m_nNewSY);
        CONVERT_IMAGE_TO_DIB(imgDst, dib)

        AfxPrintInfo(_T("[이동 변환] 입력 영상: %s, 가로 이동: %d, 세로 이동: %d"),
            GetTitle(), dlg.m_nNewSX, dlg.m_nNewSY);
        AfxNewBitmap(dib);
    }
}

소스 9-3의 OnImageTranslation 함수는 이동 변환 대화 상자를 띄우고, 사용자가 확인 버튼을 클릭하였을 경우에 한하여 실제 이동 변환을 수행한다. 이때 사용자가 입력한 이동 크기는 dlg.m_nNewSXdlg.m_nNewSY 코드를 이용하여 받아올 수 있다. CTranslateDlg 클래스와 IppTranslate 함수를 사용하기 위하여 ImageToolDoc.cpp 파일 상단에서 IppGeometry.h 파일과 TranslateDLG.h 파일을 포함(#include)하도록 코드를 추가하였다.

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