더북(TheBook)

5.5.3 상태바 구역 나누기

MFC 응용 프로그램 마법사가 만들어 준 ImageTool 프로그램은 기본적으로 상태바가 존재한다. MFC 응용 프로그램의 기본 상태바는 메뉴 항목에 대한 설명과 키보드의 Caps Lock, Num Lock, Scroll Lock 상태를 알려주는 기능을 제공한다. 그러나 영상 처리를 위한 프로그램에서는 이러한 알림이 필요하지 않을 것 같다. 대신 현재 선택된 차일드 프레임 윈도우의 영상 정보 또는 마우스 좌표 등을 표시해주면 유용할 것 같다. 실제로 상용 영상 편집 프로그램의 경우, 마우스 좌표 또는 픽셀 색상을 표시해주기도 한다. 그러므로 MFC 응용 프로그램 마법사가 만들어준 상태바 관련 코드에 대해 먼저 분석해보고, 상태바를 수정하여 마우스 좌표 및 선택된 영상의 정보를 표시할 수 있도록 해보자.

그림 5-50은 ImageTool 프로그램의 기본 상태바 모습이다. 이 상태바는 네 개의 구역으로 나뉘어 있다. 이 네 개의 구역을 두 개로 줄이고, 각각 마우스 좌표와 영상 정보를 표시하는 용도로 변경할 것이다.

그림 5-50 기본적으로 생성된 상태바의 모습

앞에서 출력창 코드를 살펴볼 때 잠깐 언급하였듯이, 상태바 또한 메인 프레임 윈도우에 붙어 있기 때문에 상태바 관련 코드도 CMainFrame 클래스에서 찾을 수 있다. CMainFrame 클래스의 멤버 함수인 OnCreate 함수를 보면 상태바를 생성하는 코드를 발견할 수 있는데, 주요 코드를 요약하면 아래와 같다.

static UINT indicators[] =
{
    ID_SEPARATOR,         // 상태바 표시기
    ID_INDICATOR_CAPS,
    ID_INDICATOR_NUM,
    ID_INDICATOR_SCRL,
};

m_wndStatusBar.Create(this);
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));

앞의 코드에서 m_wndStatusBar는 상태바 윈도우를 나타내는 CMFCStatusBar 클래스 타입의 변수이며, indicators 배열은 상태바 구역을 지정하는 역할을 한다. m_wndStatusBar.Create(this) 문장이 상태바 윈도우를 만드는 코드이고, m_wndStatusBar.SetIndicators(...) 함수는 indicators 배열을 참조하여 상태바를 여러 구역으로 분할하는 역할을 수행한다. indicators 배열의 원소가 네 개로 선언되어 있기 때문에 기본 상태바는 네 개의 구역으로 이루어져 있다. 배열의 원소 중 ID_SEPARATOR는 일반적인 용도의 상태바 구역을 의미하고, 나머지 세 개의 원소는 각각 키보드에서 Caps Lock, Num Lock, Scroll Lock 키의 상태를 표시하는 구역으로 사용된다.

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