ribbon界面是mfc编程中比较新的技术,其中的按钮在使用的过程中会遇到各种问题,将遇到的问题做一个总结分享。
工具/原料
vs2010
电脑
方法/步骤
1、第一个问题是VS2010RibbonCheckBox不能选中的问题,如果我们在编辑器直接添加CheckBox,那么在执行时无法选定,鼠标点击可以选定但是一放开复选框就无法选定。这个问题可以这样解决:定义个全局bool,boolbFlag=false;在RibbonCheckBox空间上点击右键添加事件处理程序,选择UPDATE_COMMAD_UI,在生成的相应函数里添加pCmdUI->SetCheck(bFlag),在RibbonCheckBox空间上点击右键添加事件处理程序,选择COMMAD,在生成的相应函数里添加bFlag=!bFlag,这样就可以达到效果。
2、第二个是对于数字调整编辑框的使用方法,这方面的资料比较少,获取其中的数值首先是获取文本,然蒹筻分虞后将文本转换为数值,代码如下所示:C罄休卦咦MFCRibbonBar*pRibbon=((CFrameWndEx*)AfxGetMainWnd())->GetRibbonBar();//获取数字编辑控件的数值 CMFCRibbonEdit*pComboBox=dynamic_cast<CMFCRibbonEdit*>(pRibbon->FindByID(ID_SPIN_TRACEBEGIN)); CStringnCurSel=pComboBox->GetEditText(); m_iChannel=_ttoi(nCurSel);
3、第三个是滑块按钮slider的使用,可以直接获取其中的数值,示例代码如下:CMFCRibbonBar*pRibbon=((CFrameWndEx*)AfxGetMainWnd())->GetRibbonBar(); CMFCRibbonSlider*pSlider=DYNAMIC_DOWNCAST(CMFCRibbonSlider,pRibbon->FindByID(ID_SLIDER1));inti=pSlider->GetPos();//获取滑块数值
4、第四个就是组合框combox的使用,其中项的选择需要自己在编辑器添加,如下图所示:CMFC六咝媲拜RibbonBar*pRibboncolor=((CFrameWndE旌忭檀挢x*)AfxGetMainWnd())->GetRibbonBar(); CMFCRibbonComboBox*pComboBoxcolor=dynamic_cast<CMFCRibbonComboBox*>(pRibboncolor->FindByID(ID_COLOR_COMBO)); intindex; index=pComboBoxcolor->GetCurSel(); str_color=pComboBoxcolor->GetItem(index);
5、还有一个问题就是当按钮已经布局好并且添加了消息响应函数后移动按钮位置,按钮可能会失去响应,这时候需要看一下按钮的ID是否已经改变;还有看一下resourse.h中定义按钮的常量可能有重复的,找出来将其删掉即可。