더북(TheBook)

다만, 좀 더 편리하게 사용하기 위하여 위와 같은 코드를 전역 함수 형태로 만들어보자. 이미 앞에서 ImageTool 프로그램에서만 사용하는 전역 함수 AfxNewBitmap 함수를 만든 적이 있다. AfxNewBitmap 함수의 선언과 정의를 추가한 곳에 동일하게 출력창 문자열 추가 함수를 추가해보자. 출력창에 문자열을 추가하는 전역 함수의 이름은 AfxPrintInfo를 사용하기로 하고, ImageTool.h 파일과 ImageTool.cpp 파일에 소스 5-22와 소스 5-23의 코드를 입력하자.

소스 5-22 영상 처리 정보 문자열 출력을 위한 전역 함수 선언(ImageTool.h)
// 전역 함수 선언
void AfxNewBitmap(IppDib& dib);
void AfxPrintInfo(CString message);
void AfxPrintInfo(LPCTSTR lpszFormat, ...);
소스 5-23 영상 처리 정보 문자열 출력을 위한 전역 함수 정의(ImageTool.cpp)
// 출력창에 영상 처리 정보 문자열 출력
void AfxPrintInfo(CString message)
{
    CMainFrame* pFrame = (CMainFrame*)AfxGetMainWnd();
    pFrame->m_wndOutput.AddString(message);
}

void AfxPrintInfo(LPCTSTR lpszFormat, ...)
{
    CString message;

    va_list argList;
    va_start(argList, lpszFormat);
    message.FormatV(lpszFormat, argList);
    va_end(argList);

    AfxPrintInfo(message);
}

소스 5-22와 소스 5-23에는 두 개의 AfxPrintInfo 함수가 정의되어 있다. 첫 번째 AfxPrintInfo 함수는 CString 타입의 문자열을 인자로 받고, 두 번째 AfxPrintInfo 함수는 가변 인자를 받도록 정의되어 있다. 가변 인자 형식의 AfxPrintInfo는 마치 C 언어의 printf와 동일한 방식으로 정형화된 문자열을 출력창에 표시할 수 있는 함수이다. 즉, 다음과 같은 형태의 코드를 사용할 수 있다.

AfxPrintInfo(_T("가로 크기: %d, 세로 크기: %d"), dib.GetWidth(), dib.GetHeight());
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.