BCGControlBar中文教程:Ribbon Backstage视图(三)
为了在应用程序中启用Backstage视图,您可以执行以下步骤。以下的指南假设Ribbon控件被定义为m_wndRibbonBar,应用程序按钮上显示的文本是"File",命令图片以图片列表的形式展示,视图项拥有一个资源ID IDB_FILESMALL。下面提到的图像索引假设您已经获得下面的图像列表:
11. 在资源编辑器汇总新增一个具有IDD_FORM_RECENTFILES ID的新的对话框资源。
12. 打开对话框的属性,并设置Style - Child、Border - None、Clip siblings - checked、Clip children - checked。
13. 将3个控件放置在该对话框中——静态文本"Recent Files"、集中在对话框客户端区域的列表框和它们之间的分隔符。IDC_RECENT_FILES ID分配给列表框、IDC_INFO_LABEL1分配给静态文本、IDC_SEPARATOR_1分配给分隔符:
14. 从CBCGPDialog中派生出一个类,然后命名为CBackStagePageRecentFiles。
15. 按照如下使用CBCGPRecentFilesListBox来替代标准的列表框:
- 定义对话框成员CBC PRecentFilesListBox m_wndRecentFiles;
- 在CBackStagePageRecentFiles:: DoDataExchange中添加DDX_CONTROL宏:DDX_Control(pDX, IDC_RECENT_FILES, m_wndRecentFiles);
16. 当父Backstage视图调整大小时使用自动调整功能使对话框上的所有空间自动对齐。为此将下面的代码添加到OnInitDialog中:
CBCGPStaticLayout* pLayout = (CBCGPStaticLayout*)GetLayout(); pLayout->AddAnchor(IDC_INFO_LABEL1, CBCGPStaticLayout::e_MoveTypeNone, CBCGPStaticLayout::e_SizeTypeHorz); pLayout->AddAnchor(IDC_SEPARATOR_1, CBCGPStaticLayout::e_MoveTypeNone, CBCGPStaticLayout::e_SizeTypeHorz); pLayout->AddAnchor(IDC_RECENT_FILES, CBCGPStaticLayout::e_MoveTypeNone, CBCGPStaticLayout::e_SizeTypeBoth);
此代码意味着静态文本空间不动,只是水平调整;分隔符空间不动,只是水平调整;列表控件不动,垂直和水平调整。
17. 现在我们回到初始代码,并添加一个全新的视图条目命名为"Recent":
CBCGPRibbonBackstageViewItemForm* pFormRecent = new CBCGPRibbonBackstageViewItemForm (IDD_FORM_RECENTFILES, RUNTIME_CLASS(CBackStagePageRecentFiles)); pBackstagePanel->AddView (0, _T("Recent"), pFormRecent);
18. 可能会在激活视图(激活的对话框)右下角显示一个水印图像。为此添加一个新的位图资源,并为其分配ID IDB_BS_WATERMARK。现在您可以通过调用SetWaterMarkImage为每个CBCGPRibbonBackstageViewItemForm或CBCGPRibbonBackstageViewItemPropertySheet对象设置水印图像。
19. 设置添加水印图像到"Recent"视图中:
pFormRecent->SetWaterMarkImage(IDB_BS_WATERMARK, RGB(0, 0, 192));
最后一个参数可以是相应于我们在步骤3设置的应用程序按钮颜色。
20. 添加最后一个命令"Exit":
pBackstagePanel->AddCommand (ID_APP_EXIT, _T("Exit"), 5 /* Image index */);
21. 现在,您可以编译并运行应用程序,同时可以在Backstage视图的右边查看6项条目:Save、Save As、Open、Close、Recent、Exit,其中有5个条目是命令,1个是视图("Recent")。当您单击命令时,Back Stage视图被关闭并执行单击的命令。当您选择一个视图条目 ("Recent")时,与MRU文件列表相对应的对话框将会显示在Backstage视图的右侧: