在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());
}
好,現在編譯運行,當在組合框裡面選擇項後,就會彈出此項的名稱。