實現工具列停靠功能的核心在於兩步驟:啟用框架視窗停靠支援、建立停靠控制列(工具列或對話列)。
// 框架視窗啟用停靠(任意方向)
EnableDocking(CBRS_ALIGN_ANY);
// 建立對話列作為可停靠工具列(IDD_QUICKCONNECT 為對話方塊資源 ID)
if (!m_wndQuickConnect.Create(this, IDD_QUICKCONNECT,
CBRS_LEFT | CBRS_RIGHT | CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM,
AFX_IDW_DIALOGBAR)) {
TRACE0("Failed to create dialog bar\n");
return -1;
}
m_wndQuickConnect.EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndQuickConnect);
EnableDocking(CBRS_ALIGN_ANY):框架視窗與控制列皆需呼叫,允許四邊停靠。CDialogBar(m_wndQuickConnect)本質是對話方塊資源包裝的控制列,支援停靠、浮動、隱藏。DockControlBar:將控制列實際停靠至框架視窗預設位置。CToolBar)同樣適用此流程,僅將 Create 替換為工具列建立代碼。此片段可直接用於 CMainFrame::OnCreate,快速為專案加入可停靠工具列/對話列功能。