반응형

툴바와 상태바는 모두 콘트롤 바에서 상속받은 것으로, SDI나 MDI의 경우 기본적으로 나타나도록 되어 있습니다. 메인 프레임 클래스에 보면 이들이 멤버 변수로 설정되어 있는 것을 볼 수 있습니다.

CStatusBar  m_wndStatusBar;

CToolBar    m_wndToolBar;

 

기본적으로 "보기" 메뉴에 이들을 보이거나 숨기는 기능이 있지만 사용자가  새로운 컨트롤바를 첨가하였을 경우에는 이를 직접 처리해주어야 합니다.

 

툴바를 보이거나 숨기도록 해보겠습니다.

먼저 메뉴의 "보기"에 "새 도구모음"이라는 메뉴 항목을 만듭니다. 그리고 현재 툴바의 상태를 저장하기 위한 변수를 선언합니다.

BOOL m_bShowToolBar;

 

메뉴에 대한 COMMAND와 UPDATE_COMMAND_UI에 각각의 핸들러를 작성합니다.

콘트롤 바를 보이거나 숨기는 함수는 ShowControlBar로 이는 메인 프레임 클래스의 멤버 함수입니다. 메뉴 COMMAND에서 이를 조절합니다.

void CMainFrame::OnShowToolbar() 
{

    // TODO: Add your command handler code here
    if(m_bShowToolBar){
        m_bShowToolBar = FALSE;
        ShowControlBar(&m_wndToolBar, 
FALSE
, FALSE); // 숨기기
    }
    else{
        m_bShowToolBar = TRUE;
        ShowControlBar(&m_wndToolBar, 
TRUE
, FALSE); // 보이기
        }
}

 

 다음은 콘트롤 바가 보이는 경우 메뉴에 체크 표시를 해야 합니다. 이는 메뉴의

UPDATE_COMMAND_UI에서 해주면 됩니다.

 

void CMainFrame::OnUpdateShowToolbar(CCmdUI* pCmdUI) 
{
        // TODO: Add your command update UI handler code here
        BOOL visible = m_wndToolBar.IsWindowVisible();

 

        if(visible) pCmdUI->SetCheck(TRUE);
        else pCmdUI->SetCheck(FALSE);
}

 

콘트롤 바는 CWnd 클래스에서 상속을 받아 만들어졌기 때문에 IsWindowVisible 함수로 보이는 지의 여부를 알아낼 수 있습니다.

 

새로운 메뉴 항목은 기존의 "보기->도구모음" 메뉴 항목과 동일하게 동작합니다.


 

상태바나 사용자가 첨가한 툴바의 경우에도 같은 방법으로 처리가 가능합니다.

반응형

+ Recent posts