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視圖的右側:
