더북(TheBook)

5.5.4 상태바에 영상 정보 표시

상태바에 영상의 정보를 표현하기에 앞서 상태바에 특정 문자열을 출력하는 방법에 대하여 알아보자. 상태바에 문자열을 출력하기 위해서는 CStatusBar 클래스의 멤버 함수인 SetPaneText를 사용한다. SetPaneText 함수의 기본형은 다음과 같다.

BOOL SetPaneText(
    int nIndex,
    LPCTSTR lpszNewText,
    BOOL bUpdate = TRUE
);

SetPaneText 함수의 첫 번째 인자는 상태바 구역의 인덱스이다. 이 인덱스는 0부터 순서를 매기기 때문에, 첫 번째 구역은 0번이 되고, 두 번째 구역은 1번이 된다. SetPaneText 함수의 두 번째 인자는 출력하고자 하는 문자열의 포인터이다. MFC를 사용할 경우, CString 클래스의 인스턴스를 넘겨주어도 무방하다. 세 번째 인자는 문자열 변경 사항을 바로 적용시킬 것인가를 결정하는 것이며, 따로 입력하지 않으면 자동으로 TRUE가 되어 함수 호출 즉시 문자열이 변경된다.

ImageTool 프로그램의 상태바에 나타낼 문자열은 현재 영상에서 마우스가 위치한 좌표와 영상의 가로, 세로 크기, 그리고 영상의 색상수에 대한 정보이다. 상태바의 첫 번째 구역에 마우스의 좌표를 나타내고, 두 번째 구역에 영상의 크기와 색상 정보를 출력해보자.

먼저 마우스가 가리키고 있는 영상의 픽셀 좌표 정보를 출력하는 방법에 대하여 알아보자. 영상을 표현하는 뷰 클래스 위에서 마우스가 움직이고 있을 때 좌표 정보를 출력할 것이기 때문에 뷰 클래스에서 마우스의 움직임에 대한 이벤트를 처리해야 한다. 그러므로 클래스 마법사를 실행하여 그림 5-51과 같이 WM_MOUSEMOVE 메시지에 대한 처리기를 추가하자. 대상 클래스는 CImageToolView 클래스이며, 함수 이름은 OnMouseMove이다.

그림 5-51 CImageToolView 클래스에 WM_MOUSEMOVE 이벤트 처리기 추가

CImageToolView 클래스에 만들어진 OnMouseMove 함수는 다음과 같은 형태를 갖는다.

void OnMouseMove(UINT nFlags, CPoint point);

OnMouseMove 함수는 두 개의 인자를 받는다. 첫 번째 인자는 가상키virtual key의 키 눌림 상태를 알려준다. 즉, 키보드의 CtrlShift 키 눌림 상태와 마우스 버튼의 눌림 상태를 알려준다. 두 번째 인자는 화면상에서의 마우스 좌표를 알려준다. 이 좌표를 이용하여 상태바에 마우스가 위치한 영상 내의 픽셀 좌표를 출력할 수 있다.

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