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返回的字符串。