BCGControlBar中文教程:Ribbon Backstage視圖(三)
為了在應(yīng)用程序中啟用Backstage視圖,您可以執(zhí)行以下步驟。以下的指南假設(shè)Ribbon控件被定義為m_wndRibbonBar,應(yīng)用程序按鈕上顯示的文本是"File",命令圖片以圖片列表的形式展示,視圖項(xiàng)擁有一個(gè)資源ID IDB_FILESMALL。下面提到的圖像索引假設(shè)您已經(jīng)獲得下面的圖像列表:
11. 在資源編輯器匯總新增一個(gè)具有IDD_FORM_RECENTFILES ID的新的對話框資源。
12. 打開對話框的屬性,并設(shè)置Style - Child、Border - None、Clip siblings - checked、Clip children - checked。
13. 將3個(gè)控件放置在該對話框中——靜態(tài)文本"Recent Files"、集中在對話框客戶端區(qū)域的列表框和它們之間的分隔符。IDC_RECENT_FILES ID分配給列表框、IDC_INFO_LABEL1分配給靜態(tài)文本、IDC_SEPARATOR_1分配給分隔符:
14. 從CBCGPDialog中派生出一個(gè)類,然后命名為CBackStagePageRecentFiles。
15. 按照如下使用CBCGPRecentFilesListBox來替代標(biāo)準(zhǔn)的列表框:
- 定義對話框成員CBC PRecentFilesListBox m_wndRecentFiles;
- 在CBackStagePageRecentFiles:: DoDataExchange中添加DDX_CONTROL宏:DDX_Control(pDX, IDC_RECENT_FILES, m_wndRecentFiles);
16. 當(dāng)父Backstage視圖調(diào)整大小時(shí)使用自動調(diào)整功能使對話框上的所有空間自動對齊。為此將下面的代碼添加到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);
此代碼意味著靜態(tài)文本空間不動,只是水平調(diào)整;分隔符空間不動,只是水平調(diào)整;列表控件不動,垂直和水平調(diào)整。
17. 現(xiàn)在我們回到初始代碼,并添加一個(gè)全新的視圖條目命名為"Recent":
CBCGPRibbonBackstageViewItemForm* pFormRecent = new CBCGPRibbonBackstageViewItemForm (IDD_FORM_RECENTFILES, RUNTIME_CLASS(CBackStagePageRecentFiles)); pBackstagePanel->AddView (0, _T("Recent"), pFormRecent);
18. 可能會在激活視圖(激活的對話框)右下角顯示一個(gè)水印圖像。為此添加一個(gè)新的位圖資源,并為其分配ID IDB_BS_WATERMARK?,F(xiàn)在您可以通過調(diào)用SetWaterMarkImage為每個(gè)CBCGPRibbonBackstageViewItemForm或CBCGPRibbonBackstageViewItemPropertySheet對象設(shè)置水印圖像。
19. 設(shè)置添加水印圖像到"Recent"視圖中:
pFormRecent->SetWaterMarkImage(IDB_BS_WATERMARK, RGB(0, 0, 192));
最后一個(gè)參數(shù)可以是相應(yīng)于我們在步驟3設(shè)置的應(yīng)用程序按鈕顏色。
20. 添加最后一個(gè)命令"Exit":
pBackstagePanel->AddCommand (ID_APP_EXIT, _T("Exit"), 5 /* Image index */);
21. 現(xiàn)在,您可以編譯并運(yùn)行應(yīng)用程序,同時(shí)可以在Backstage視圖的右邊查看6項(xiàng)條目:Save、Save As、Open、Close、Recent、Exit,其中有5個(gè)條目是命令,1個(gè)是視圖("Recent")。當(dāng)您單擊命令時(shí),Back Stage視圖被關(guān)閉并執(zhí)行單擊的命令。當(dāng)您選擇一個(gè)視圖條目 ("Recent")時(shí),與MRU文件列表相對應(yīng)的對話框?qū)@示在Backstage視圖的右側(cè):