Visual C++还是比较常用的,于是我研究了一下VS Ribbon命令按钮,在这里拿出来和大家分享一下,希望对大家有用。到现在为止,我们已经按照菜单式界面的开发流程,完成了资源的编辑和消息函数的实现。如果这时我们编译运行解决方案,我们在程序界面上看不到任何变化,因为我们还没有把这些命令绑定到Ribbon Bar的命令按钮上。在CMainFrame类中,它提供了一个专门的函数CMainFrame::InitializeRibbon()来完成 Ribbon界面的初始化工作,所以,我们在这个函数中添加如下代码,创建新的命令分组,然后将命令按钮映射到我们刚刚创建的菜单项。
- 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()函数,添加了一个新的命令分组(Category),也就是Ribbon Bar上的一个新的标签页。然后,我们在这个新创建的标签页中,添加了一个新的面板(Panel)。***,我们创建了三个VS Ribbon命令按钮 (CMFCRibbonButton),并将它们放置到面板中。通过指定跟菜单资源中的菜单项相同的资源ID,我们将这些VS Ribbon命令按钮跟我们之前创建的菜单项一一对应起来。当我们点击某个VS Ribbon命令按钮时,就会执行相应的菜单命令响应函数。这样,我们就实现了菜单命令在Ribbon Bar的绑定,同时在界面上也能看到我们刚刚添加的命令按钮了。
在这里,我们只是简单地向大家介绍了Ribbon界面的基本概念和大致的开发流程,要想开发跟Office 2007一样专业的Ribbon界面,我们还有很长的一段路要走,敬请关注本系列文章,创建面向Windows 7的用户界面。