vs2008 office Ribbon 界面风格初总结

我每次做软件界面时,总是大费周折,老也弄不好这个vs2008 office Ribbon风格,今天查了些资料,又结合我最近做的红外数据处理的软件的界面,把Ribbon的固定的操作给小小总结下。

正如网上说的,这个Ribbon分为三个等级,从大到小分别为:Category(分类),pannel(面板)和元素(元素包括按钮,复选框等);

所以一般在一个vs2008MFC程序下,在CMainFrame中的InitialRibbon函数中会生成很多默认的一些菜单按钮项,注释掉不想要的,写我们自己需要的。

首先,定义一个Category,

代码:

strTemp = "图像";
CMFCRibbonCategory* pCategoryHome = m_wndRibbonBar.AddCategory(strTemp, IDB_FILESMALL, IDB_FILELARGE);

这个addCategory函数,后面两个参数,是要缴入图标的ID,这里vs2008资源里有很多自带的图标,选一组自己喜欢的,也可以自己画的图标,导入进去,至于自己画的导进去的我目前还没有尝试,等我下步做到那再写吧,现在随便选的图标组。

然后,生成面板,

代码:

strTemp = "导入图像视图面板";
CMFCRibbonPanel *pPanelView = pCategoryHome->AddPanel(strTemp,m_PanelImages.ExtractIcon(0));

这个里面参数没太研究是怎么回事,改变里面的设置,没有发现什么变化,所以先不说了。

最后就是要加上自己所有添加的按钮了。

代码:

strTemp = "导入图像";
pPanelView->Add(new CMFCRibbonButton(ID_IMAGE_OPEN,strTemp,0,1));

strTemp = "点选图像标志点";
pPanelView->Add(new CMFCRibbonButton(ID_SELECT_POINT,strTemp,0,4));

strTemp = "图像校正";
pPanelView->Add(new CMFCRibbonButton(ID_IMAGE_ADJUST,strTemp,0,6));

strTemp = "图像保存";
pPanelView->Add(new CMFCRibbonButton(ID_IMAGE_SAVE,strTemp,0,3));

这里CMFCRibbionButton参数中,第一个参数是我们再自由menu里事先设定好的菜单按钮ID号,最后两个参数为bitmap图标组里对应的图标号,据说是小图标和大图标,这个大小如何控制我也不太清楚,主要改变最后一个参数控制改变不太图标。

这样一组分类界面就完成了。如果想再来一组,按照上面步骤,申请不同的category 及pannel和buttom就行了,但是不要忘记使用不同的变量。

把我程序的代码贴上了,

strTemp = "温度数据";
CMFCRibbonCategory *pCategoryHome2=m_wndRibbonBar.AddCategory(strTemp, IDB_FILESMALL,IDB_FILELARGE);

#pragma Region WFC;
strTemp = "数据修正面板";
CMFCRibbonPanel *pPanelView2 = pCategoryHome2->AddPanel(strTemp,m_PanelImages.ExtractIcon(2));

strTemp = "读入红外温度";
pPanelView2->Add(new CMFCRibbonButton(ID_OPEN_IR_TEMP,strTemp,0,5));

strTemp = "读入传感器温度";
pPanelView2->Add(new CMFCRibbonButton(ID_OPEN_PROBE_TEMP,strTemp,0,8));

strTemp = "温度修正";
pPanelView2->Add(new CMFCRibbonButton(ID_TEMP_CONV,strTemp,0,7));

strTemp = "温度保存";
pPanelView2->Add(new CMFCRibbonButton(ID_TEMP_SAVE,strTemp,0,2));

#pragma end ;


strTemp = "温度场";
CMFCRibbonCategory *pCategoryHome3=m_wndRibbonBar.AddCategory(strTemp,IDB_WRITESMALL,IDB_WRITELARGE);

#pragma Region WFC;
strTemp = "选择要显示的温度";
CMFCRibbonPanel *pPanelView3 = pCategoryHome3->AddPanel(strTemp,m_PanelImages.ExtractIcon(2));

strTemp = "显示温度场";
pPanelView3->Add(new CMFCRibbonButton(ID_OPEN_IR_TEMP,strTemp,0,0));

strTemp = "温度场保存";
pPanelView3->Add(new CMFCRibbonButton(ID_OPEN_PROBE_TEMP,strTemp,0,1));


#pragma end ;

界面运行完了如下图,

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
使用VS2010创建一个带Ribbon样式的单文档程序 项目类型为:Office 在资源中,可对Ribbon进行编辑 Ribbon控件中,按右键,添加事件处理 图标的添加: 使用 Axialis IconWorkshop 添加一个: 来自数个文件的图像带 添加数个PNG图像(推荐PNG图像,带Alpha透明) 最后保存成BMP格式 在VS资源中,导入BMP,如下: IDB_BMP_ICO IDB_BMP_ICO2 分别用于大图标与小图标 在面板的属性中,分别指定此面板需要采用的LargeImages 与 SmallImages 在面板中的按钮属性中,添加图标 复选框的按钮,需要添加一个 BOOL m_bCheck; 在按钮中,对其进行控件,并在Ribbon更新的时候,对复选框进行勾选或取消勾选 void CMainFrame::OnChkTest() { m_bCheck = !m_bCheck; if (m_bCheck) { AfxMessageBox(_T("勾选")); } else { AfxMessageBox(_T("取消")); } } void CMainFrame::OnUpdateChkTest(CCmdUI *pCmdUI) { pCmdUI->SetCheck(m_bCheck); } 程序运行结果如下: 主要菜单响应事件如下代码: void CMainFrame::OnBtnEditText() { CMFCRibbonEdit* pEditA = DYNAMIC_DOWNCAST(CMFCRibbonEdit, m_wndRibbonBar.FindByID(ID_EDT_A)); CMFCRibbonEdit* pEditB = DYNAMIC_DOWNCAST(CMFCRibbonEdit, m_wndRibbonBar.FindByID(ID_EDT_B)); CString strA; strA = pEditA->GetEditText(); CString strB; strB = pEditB->GetEditText(); AfxMessageBox(strA+_T(" - ")+strB); CMFCRibbonButton* pBtn = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_BTN_EDIT_TEXT)); } void CMainFrame::OnBtnColor() { CMFCRibbonColorButton* pBtn = DYNAMIC_DOWNCAST(CMFCRibbonColorButton, m_wndRibbonBar.FindByID(ID_BTN_COLOR)); COLORREF color; color = pBtn->GetColor(); BYTE r = GetRValue(color); BYTE g = GetGValue(color); BYTE b = GetBValue(color); CString strColor; strColor.Format(_T("颜色:R:%d-G:%d-B:%d"), r, g, b); AfxMessageBox(strColor); } void CMainFrame::OnSpinNum() { // 怎么会运行两次呢 CMFCRibbonEdit* pEdit = DYNAMIC_DOWNCAST(CMFCRibbonEdit, m_wndRibbonBar.FindByID(ID_SPIN_NUM)); CString strGet; strGet = pEdit->GetEditText(); AfxMessageBox(strGet); } void CMainFrame::OnCmbTest() { CMFCRibbonComboBox* pCmb = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, m_wndRibbonBar.FindByID(ID_CMB_TEST)); CString strGet; strGet =

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值