淺談VS Ribbon命令按鈕
Visual C++還是比較常用的,于是我研究了一下VS Ribbon命令按鈕,在這里拿出來和大家分享一下,希望對大家有用。到現(xiàn)在為止,我們已經按照菜單式界面的開發(fā)流程,完成了資源的編輯和消息函數(shù)的實現(xiàn)。如果這時我們編譯運行解決方案,我們在程序界面上看不到任何變化,因為我們還沒有把這些命令綁定到Ribbon Bar的命令按鈕上。在CMainFrame類中,它提供了一個專門的函數(shù)CMainFrame::InitializeRibbon()來完成 Ribbon界面的初始化工作,所以,我們在這個函數(shù)中添加如下代碼,創(chuàng)建新的命令分組,然后將命令按鈕映射到我們剛剛創(chuàng)建的菜單項。
- void CMainFrame::InitializeRibbon()
- {
- BOOL bNameValid;
- ///…
- //////////////////////////////////////////////////////////////
- // 添加一個命令分組(Category)“RibbonUI Category”
- CMFCRibbonCategory *pRibbonUICategory =
- m_wndRibbonBar.AddCategory(_T("RibbonUI Category"),
- IDB_WRITESMALL, IDB_WRITELARGE);
- // 添加一個面板(Panel)
- CMFCRibbonPanel *pTestPanel = pRibbonUICategory->
AddPanel(_T("RibbonUI Panel"), m_PanelImages.ExtractIcon(1));- // 在面板上添加Ribbon命令按鈕(CMFCRibbonButton)
- pTestPanel->Add(new CMFCRibbonButton(ID_EDIT_SAYHELLO, _T("Say Hello"), 0, 0));
- pTestPanel->Add(new CMFCRibbonButton(ID_EDIT_SAYHELLO, _T("Say Hello"), 1));
- pTestPanel->Add(new CMFCRibbonButton(ID_EDIT_SAYGOODBYE, _T("Say Goodbye"), 2));
- //////////////////////////////////////////////////////////////
- ///…
- }
#t#在這段代碼中,我們首先利用Ribbon Bar的AddCategory()函數(shù),添加了一個新的命令分組(Category),也就是Ribbon Bar上的一個新的標簽頁。然后,我們在這個新創(chuàng)建的標簽頁中,添加了一個新的面板(Panel)。***,我們創(chuàng)建了三個VS Ribbon命令按鈕 (CMFCRibbonButton),并將它們放置到面板中。通過指定跟菜單資源中的菜單項相同的資源ID,我們將這些VS Ribbon命令按鈕跟我們之前創(chuàng)建的菜單項一一對應起來。當我們點擊某個VS Ribbon命令按鈕時,就會執(zhí)行相應的菜單命令響應函數(shù)。這樣,我們就實現(xiàn)了菜單命令在Ribbon Bar的綁定,同時在界面上也能看到我們剛剛添加的命令按鈕了。
在這里,我們只是簡單地向大家介紹了Ribbon界面的基本概念和大致的開發(fā)流程,要想開發(fā)跟Office 2007一樣專業(yè)的Ribbon界面,我們還有很長的一段路要走,敬請關注本系列文章,創(chuàng)建面向Windows 7的用戶界面。