더북(TheBook)

영상 처리 프로그램에서 Caps Lock, Num Lock, Scroll Lock 등의 키보드 눌림 상태를 알려줄 필요는 없어 보인다. 그러므로 키보드 정보를 알려주는 상태바의 구역은 모두 제거하고, 마우스의 위치 좌표와 영상의 고유 정보를 표시하는 두 개의 구역으로 새로 분리하도록 하자. 영상의 고유 정보에서는 가로, 세로 픽셀 크기와 영상의 색상수를 표시해보도록 하자.

상태바의 구역 정보를 변경하기 위해서는 SetIndicators 함수의 인자로 전달되는 indicators 배열의 내용을 변경해야 한다. 상태바를 두 개의 구역을 나눌 것이기 때문에 indicators 배열의 원소 개수도 두 개가 될 것이다. 기존의 indicators 배열 원소 중에서 ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL 항목을 삭제하고, ID_SEPARATOR 항목을 하나 더 추가하도록 하자. 상태바의 구역 정보를 변경하기 위해 수정해야 하는 MainFrm.cpp 파일의 내용들은 소스 5-26에 나타내었다.

소스 5-26 상태바 구역 정보 변경(MainFrm.cpp)
static UINT indicators[] =
{
    ID_SEPARATOR,          // 상태바 표시기
    ID_SEPARATOR,
};

…

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
…
if (!m_wndStatusBar.Create(this))
    {
        TRACE0("상태 표시줄을 만들지 못했습니다.\n");
        return -1;      // 만들지 못했습니다.
    }
    m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
    m_wndStatusBar.SetPaneInfo(1, ID_SEPARATOR, SBPS_NORMAL, 150);
        …
}

소스 5-26에서 상태바를 생성하고, SetIndicators 함수를 호출하는 부분의 코드는 기존의 코드와 동일하다. 다만 아래쪽에 SetPaneInfo 함수를 사용하여 상태바의 두 번째 구역 가로 크기를 150으로 지정하였다. 상태바의 구역을 표현할 때 0-기반으로 표현하기 때문에 두 번째 구역의 크기를 지정하는 경우 첫 번째 인자에 1을 넣어주어야 한다.

이것으로 원래 네 개의 구역으로 나누어져 있던 상태바의 구역을 두 개로 변경하였다. 이제 상태바의 각 구역에 영상의 정보를 출력하는 기능을 만들어보자.

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