IDR_TOOLBAR 並編輯按鈕。MainFrame.h 宣告成員:CToolBar m_newToolBar;OnCreate 中建立並載入:if (!m_newToolBar.CreateEx(this, TBSTYLE_FLAT,
WS_CHILD | WS_VISIBLE | CBRS_RIGHT | CBRS_GRIPPER |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_newToolBar.LoadToolBar(IDR_TOOLBAR)) {
TRACE0("Failed to create toolbar\n");
return -1;
}
m_newToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_newToolBar);
透過 ClassWizard 為選單項目 ID_TOOLBAR 新增 OnToolbar 處理函式:
void CMainFrame::OnToolbar() {
if (m_newToolBar.IsWindowVisible()) {
m_newToolBar.ShowWindow(SW_HIDE);
} else {
m_newToolBar.ShowWindow(SW_SHOW);
}
RecalcLayout(); // 重新計算版面,避免殘留佔位空間
DockControlBar(&m_newToolBar); // 確保拖曳出邊框後仍能正確顯示/隱藏
}
ShowControlBar 一行搞定void CMainFrame::OnToolbar() {
ShowControlBar(&m_newToolBar, !m_newToolBar.IsWindowVisible(), FALSE);
// 參數:控制列指標、是否顯示、是否延遲重繪
// 自動保存隱藏前位置,碼更簡潔健壯
}
為選單項目新增 UPDATE_COMMAND_UI 處理函式 OnUpdateToolbar:
void CMainFrame::OnUpdateToolbar(CCmdUI* pCmdUI) {
pCmdUI->SetCheck(m_newToolBar.IsWindowVisible());
}
此機制會在選單顯示前自動呼叫,確保核取記號與工具列實際狀態一致。
ID_TOOLBAR。Ctrl+T)。