더북(TheBook)

OnDraw 함수에서 영상을 화면에 출력하는 기능은 IppDib 클래스의 멤버 함수인 Draw 함수가 담당한다. Draw 함수는 출력할 장치device의 DC 핸들을 인자로 받으며, 이는 pDC->m_hDC 형태로 넘겨줄 수 있다. m_hDC는 CDC 클래스의 멤버 변수로서 출력 장치의 DC 핸들 값을 저장하고 있다. pDCOnDraw 함수의 인자에 쓰여진 CDC* 타입의 변수 이름이며, 이는 기본적으로 주석처리가 되어 있기 때문에 이를 사용하려면 주석 표시를 없애주어야 한다. 안전한 코드 작성을 위하여 if 문에서 CimageToolDoc 클래스의 m_Dib가 현재 정상적인 비트맵을 가지고 있는지를 확인하고 있다. IsValid 함수는 IppDib 클래스의 인스턴스가 정상적인 DIB 객체를 포함하고 있는지를 확인하는 함수이다.

이제 BMP 파일을 불러오고 화면에 출력하는 코드까지 작성하였다. 이제 프로그램을 빌드하고 실행하여 프로그램이 정상적으로 동작하는지를 확인해보자. Visual Studio 메뉴 중에서 [빌드] > [솔루션 빌드]를 실행해보자. 또는 단축키 F7을 눌러도 된다. 만약 출력 창에 에러가 한 개 이상 발생하여 빌드에 실패하면, F4를 눌러 에러가 난 부분으로 바로 이동할 수 있다. 출력 창에 어떤 에러가 발생했는지도 함께 출력되니 에러 메시지를 잘 읽어보고 수정하기 바란다. 빌드가 정상적으로 성공하면, 단축키 F5를 눌러 ImageTool 프로그램을 실행시켜보자.

그림 5-16은 ImageTool 프로그램을 실행하여 실제 영상을 불러와 화면에 출력한 모습을 보여준다. ImageTool 프로그램 실행 후, 메뉴 중에서 [파일] > [열기]를 선택하여 lenna.bmp와 mandrill.bmp 파일을 각각 선택한 결과이다. 참고로 탐색기에서 lenna.bmp와 mandrill.bmp 파일을 드래그하여 ImageTool 프로그램에 올려놓아도 해당 BMP 파일을 열 수 있다. MFC 응용 프로그램 마법사가 만들어준 프로그램은 기본적으로 파일의 드래그 앤 드롭 기능을 지원하기 때문이다. 그림 5-16과 같이 트루컬러 비트맵과 그레이스케일 비트맵 모두 정상적으로 나타나는지 직접 확인해보기 바란다.

그림 5-16 ImageTool 프로그램에서 불러온 영상 화면 출력하기
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.