Visual Studio Ribbon面板的層次
Visual Studio有很多值得學(xué)習(xí)的地方,這里我們主要介紹Visual Studio Ribbon面板,包括介紹Visual Studio 2010為我們提供了很多控件等方面。除了我們上回介紹的命令按鈕(CMFCRibbonButton)之外,還有工具廊 (CMFCRibbonGallery),顏色按鈕(CMFCRibbonColorButton),編輯框(CMFCRibbonEdit),進(jìn)度條 (CMFCRibbonProgressBar)等等。合理地使用這些控件,我們可以創(chuàng)建豐富的Ribbon界面,增強(qiáng)軟件的可用性。在這回中,我們就介紹一下如何使用這些控件,創(chuàng)建更加復(fù)雜的Ribbon界面,完成更加復(fù)雜的交互任務(wù)。
#t#為了更好地理解和創(chuàng)建Ribbon界面,在開始具體地介紹各種控件之前,我們先來了解一下Ribbon界面的結(jié)構(gòu)層次。在上一回中,我們介紹了Ribbon界面主要由Visual Studio Ribbon面板(CMFCRibbonBar)構(gòu)成,而Visual Studio Ribbon面板主要的主要分為三個(gè)層次:
◆分類(CMFCRibbonCategory)
很明顯,“分類”就是作用相近的一類命令的組合。例如在Word 2007的Ribbon界面中,微軟將跟插入元素相關(guān)的命令都放在“Insert”這個(gè)頁面中,當(dāng)用戶想在Word文檔中插入其他元素時(shí),只要切換到這一頁就可以找到他需要的命令。在形式上,“分類”表現(xiàn)為Visual Studio Ribbon面板上的一個(gè)Tab頁面。我們可以使用函數(shù)AddCategory()在Visual Studio Ribbon面板上添加一個(gè)新的“分類”:
- // 添加一個(gè)命令分組(Category)“RibbonUI Category”
- CMFCRibbonCategory *pRibbonUICategory = m_wndRibbonBar.
AddCategory(_T("RibbonUI Category"), IDB_WRITESMALL, IDB_WRITELARGE);
◆面板(CMFCRibbonPanel)
“面板”是“分類”的下一個(gè)層次。它是聯(lián)系更加緊密的一組命令的組合。面板總是被放置在某個(gè)“分類”中,被“分類”所包含。同時(shí),“面板”又是一個(gè)容器,它包含著它的下一個(gè)層次“元素”。我們可以通過AddPanel()函數(shù)在“分類”中添加新的“面板”:
- // 添加一個(gè)面板(Panel)
- CMFCRibbonPanel *pTestPanel = pRibbonUICategory->
- AddPanel(_T("RibbonUI Panel"),m_PanelImages.ExtractIcon(1));
◆元素(CMFCRibbonBaseElement)
“元素”就是我們通常意義上的控件、這些控件根據(jù)各自的功能,被分組放置在各個(gè)“面板”上,負(fù)責(zé)完成具體的交互任務(wù)。Visual Studio 2010提供的Ribbon界面“元素”主要包括命令按鈕(CMFCRibbonButton)。工具廊(CMFCRibbonGallery)、顏色按鈕(CMFCRibbonColorButton)、編輯框(CMFCRibbonEdit)、進(jìn)度條(CMFCRibbonProgressBar)等等。這些類都派生自CMFCRibbonBaseElement。