MDI選項(xiàng)卡組
立即下載BCGControlBar Professional Edition for MFC
MDI選項(xiàng)卡組接口取代了常規(guī)的MDI選項(xiàng)卡組接口,該接口是在7.20版本之前由庫實(shí)現(xiàn)的。它允許在MDI客戶端區(qū)域創(chuàng)建一個(gè)或多個(gè)選項(xiàng)卡窗口(或選項(xiàng)卡組),選項(xiàng)卡窗口可以垂直或水平對(duì)齊,并通過分割器進(jìn)行分割。
主要特點(diǎn):
- 能夠動(dòng)態(tài)創(chuàng)建一個(gè)或多個(gè)選項(xiàng)卡窗口或使用庫的API。
- 選項(xiàng)卡窗口的水平或垂直對(duì)齊。
- 選項(xiàng)卡窗口由分隔器分隔,拆分器允許用戶調(diào)整選項(xiàng)卡窗口的大小。
- 能夠在組之間拖動(dòng)單個(gè)選項(xiàng)卡。
- 能夠拖動(dòng)單個(gè)選項(xiàng)卡和創(chuàng)建新組。
- 能夠移動(dòng)選項(xiàng)卡或使用上下文菜單創(chuàng)建新組。
- 能夠保存和加載選項(xiàng)卡窗口的布局。
- 選項(xiàng)來保存和加載文檔列表(它也適用于任何MDI接口)。
- 能夠?qū)DI子框架拖出父框架并創(chuàng)建一個(gè)新的頂級(jí)框架 ("MDI tear-off")。
- 可以訪問單個(gè)選項(xiàng)卡組并修改其參數(shù)。
如何啟用上述功能:
1.使用 CBCGPMDIFrameWnd::EnableMDITabbedGroups來啟用MDI選項(xiàng)卡組特性,第二個(gè)參數(shù)是CBCGPMDITabParams類的實(shí)例。在傳遞給CBCGPMDIFrameWnd::EnableMDITabbedGroups之前,您可以填充它或保持默認(rèn)值。
CBCGPMDITabParams params; params.m_nTabBorderSize = 1; EnableMDITabbedGroups (TRUE, params);
點(diǎn)擊復(fù)制
如果需要在運(yùn)行時(shí)更改上述任何參數(shù),只需填充CBCGPMDIFrameWnd::EnableMDITabbedGroups對(duì)象并再次調(diào)用CBCGPMDIFrameWnd::EnableMDITabbedGroups即可。
2.您可以使用const CBCGPMDIFrameWnd::GetMDITabGroups方法獲得選項(xiàng)卡窗口列表。
3.CBCGPMDIFrameWnd::MDITabNewGroup在活動(dòng)組旁邊創(chuàng)建一個(gè)新的選項(xiàng)卡組。
4.CBCGPMDIFrameWnd::MDITabMoveToNextGroup將活動(dòng)窗口移動(dòng)到下一個(gè)或上一個(gè)組。
5.CBCGPMDIFrameWnd::IsMemberOfMDITabGroup 告訴pWnd是否存在于其他選項(xiàng)卡窗口中。
6.CBCGPMDIFrameWnd::AreMDITabs告訴是否啟用了regular MDITabs或MDI Tabbed Groups功能,也可以使用BOOL CBCGPMDIFrameWnd::IsMDITabbedGroup常量來顯式測(cè)試MDI選項(xiàng)卡組特性。
7.覆蓋在主框架派生類CBCGPMDIFrameWnd::OnShowMDITabContextMenu.,它允許在用戶單擊其中一個(gè)選項(xiàng)卡或在另一個(gè)選項(xiàng)卡組上拖放選項(xiàng)卡時(shí)顯示彈出式菜單。
8.調(diào)用 CBCGPMDIFrameWnd::LoadMDIState和 CBCGPMDIFrameWnd::SaveMDIState來加載和保存MDI選項(xiàng)卡組的布局。此外,如果需要加載/保存打開的文檔列表(適用于任何MDI接口),應(yīng)該調(diào)用這些方法。
9.為了加載/保存MDI選項(xiàng)卡和組狀態(tài)以及打開的文檔列表,您需要執(zhí)行以下操作:
- 當(dāng)主框架關(guān)閉時(shí),調(diào)用CBCGPMDIFrameWnd::SaveMDIState。
- 在創(chuàng)建主框架時(shí)調(diào)用CBCGPMDIFrameWnd::LoadMDIState ,建議在第一次顯示主框架之前調(diào)用這個(gè)函數(shù)。
- 使用EnableLoadWindowPlacement (FALSE);在pMainFrame->LoadFrame(IDR_MAINFRAME)之前;
- 在CBCGPMDIFrameWnd::LoadMDIState之后使用 CBCGPWorkspace::ReloadWindowPlacement (pMainFrame)來顯示存儲(chǔ)在注冊(cè)表中的主框架位置。
- 如果您的應(yīng)用程序顯示的文檔不是作為文件存儲(chǔ)的,則在CBCGPMDIChildWnd派生類中重寫CBCGPMDIChildWnd::GetDocumentName,返回的字符串將作為文檔標(biāo)識(shí)符保存在注冊(cè)表中,CBCGPMDIChildWnd中的基本實(shí)現(xiàn)返回一個(gè)從CDocument::GetPathName獲得的值。
- 覆蓋CBCGPMDIFrameWnd::CreateDocumentWindow,以便在從注冊(cè)表加載文檔時(shí)正確創(chuàng)建文檔。參數(shù)'lpcszDocName'是先前從CBCGPMDIChildWnd::GetDocumentName返回的字符串。