在CMFCRibbonComboBox上选择不同项的话,应该要响应 ON_CBN_SELCHANGE 之类的消息,但是在VS2008SP1中的功能包里面的CMFCRibbonComboBox貌似不是响应这个的。下面介绍 CMFCRibbonComboBox的动态建立,绑定,提示、消息响应:
首先:在MainFrm.cpp里面:
CMFCRibbonComboBox*pComboSimple2=new CMFCRibbonComboBox(ID_LANGUAGE,FALSE,75,_T("语法着色"),3);
pComboSimple2->AddItem(_T("ADA"));
pComboSimple2->SelectItem(0);
pPanelStyle->Add(pComboSimple2); //pPanelStyle是CMFCRibbonPanel
然后:在Resource.h里面自建一个#define ID_LANGUAGE 61447
接着:在rc资源文件的String Table里添加一个提示信息:ID_LANGUAGE "这是对语言的着色/n风格"
最后:在C*View的头文件里面定义一个消息afx_msg void OnSelectLanguage();
在C*View的实现文件里面绑定消息ON_COMMAND(ID_LANGUAGE, OnSelectLanguage)
在下面实现消息的函数:
void C*View::OnSelectLanguage()
{
// TODO: 在此添加命令处理程序代码
CMFCRibbonBar* pRibbon = ((CMainFrame*) GetTopLevelFrame())->GetRibbonBar();
ASSERT_VALID(pRibbon);
CMFCRibbonComboBox* pSizeCombo = DYNAMIC_DOWNCAST(CMFCRibbonComboBox, pRibbon->FindByID(ID_LANGUAGE));
if (pSizeCombo == NULL)
{
return;
}
AfxMessageBox(pSizeCombo->GetEditText());
}
好,现在编译运行,当在组合框里面选择项后,就会弹出此项的名称。