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);
}
参照