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