Last Updated 2003/03/12
Programming Tips Visual C++ MFC ツールバー  索 引 
ツールバーの表示非表示
2003/03/12

AppWizard にて,ツールバーを作成した場合はメニューにて表示非表示が可能である.

ツールバーを独自に追加した場合はどうすれば表示非表示を切り替えれるのか?

このあたりが参考になる.
WINFRM.CPP(69):
ON_COMMAND_EX(ID_VIEW_TOOLBAR, OnBarCheck)
WINFRM.CPP(1665):
BOOL CFrameWnd::OnBarCheck(UINT nID)

WINFRM.CPP(68):
ON_UPDATE_COMMAND_UI(ID_VIEW_TOOLBAR, OnUpdateControlBarMenu)
WINFRM.CPP(1651):
void CFrameWnd::OnUpdateControlBarMenu(CCmdUI* pCmdUI)


メインフレームに追加.
BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd)
    //{{AFX_MSG_MAP(CMainFrame)
    //}}AFX_MSG_MAP
    ON_UPDATE_COMMAND_UI(ID_EXT_BAR, OnUpdateControlBarMenu)
    ON_COMMAND_EX(ID_EXT_BAR, OnBarCheck)
END_MESSAGE_MAP()


CMainFrame::OnCreate() にてツールバーの作成を行う.

    if( !m_wndToolBar3.Create(this,
                              WS_CHILD | WS_VISIBLE | CBRS_SIZE_DYNAMIC |
                              CBRS_TOP | ((m_bToolTips) ? (CBRS_TOOLTIPS | CBRS_FLYBY) : 0),
                              ID_EXT_BAR) ||
                              !m_wndToolBar3.LoadBitmap(IDB_BITMAP_OTHER) ||
                              !m_wndToolBar3.SetButtons(buttons3, sizeof(buttons3) / sizeof(UINT))) {
        TRACE0("Failed to create 3rd bar\n");
        return -1;      // fail to create
    }


void CMyMainFrame::OnBarCheck()
{
    // ツール バーが表示中なら
    if( m_wndMyToolBar.IsWindowVisible() ) {
        // 消す
        ShowControlBar(&m_wndToolBar3, FALSE, TRUE);
    } else {
        // 出す
        ShowControlBar(&m_wndToolBar3, TRUE , TRUE);
    }
}

void CMyMainFrame::OnUpdateControlBarMenu(CCmdUI* pCmdUI)
{
    // メニューの項目をイネーブルにして, 
    pCmdUI->Enable();
    // ツール バーが表示中ならチェックを付ける
    pCmdUI->SetCheck(m_wndToolBar3.IsWindowVisible() ? 1 : 0);
}


参照
前後のTips
ツールバーの表示非表示

DSS ProgrammingTipsCGI Ver2.01