分模块单独开发ribbon界面并可响应其界面按钮事件,怎么办到

分模块单独开发ribbon界面并可响应其界面按钮事件,如何办到
我想 分模块单独开发ribbon界面
分模块单独开发ribbon界面并可响应其界面按钮事件,如何办到
在ttest0920模块中

// 创建面状菜单功能显示区域
void CMainFrame::InitializeRibbon(void)
{
m_wndRibbonBar.Create(this);
CString strTemp;
// Load panel images:
m_PanelImages.SetImageSize(CSize(32,32));
m_PanelImages.Load(IDB_BITMAP1);

// Init main button:
m_MainButton.SetImage(IDB_MAIN);
m_MainButton.SetText(_T("\nf"));
m_MainButton.SetRightAlignMenu(false);
m_MainButton.SetToolTipText(_T("系统图标"));

// 设置左上角按钮
m_wndRibbonBar.SetApplicationButton(&m_MainButton, CSize (45, 45));

m_pTestEx->ExCreate(this);

// 创建第一个界面
m_pTestEx->AdddCate(&m_wndRibbonBar,_T("工具"));

// 创建第2个界面
m_pNextClass->AdddCate(&m_wndRibbonBar,_T("报警定位"));

}

其中的 m_pTestEx- 与pNextClass 都为其他模块中的对话框类。添加按钮与实践响应后 运行 界面中改按钮为灰色 点击事件无响应
void CTestDlg::AdddCate(CMFCRibbonBar* MFCRBar, LPCTSTR lpCateName)
{
// 添加 第一个分组
CMFCRibbonCategory* pCategoryHome = MFCRBar->AddCategory(lpCateName,IDB_BITMAP1 ,IDB_BITMAP1 , CSize(16, 16), CSize(32, 32), -1);

// Load panel images:
m_TestBImgs.SetImageSize(CSize(32,32));
m_TestBImgs.Load(IDB_BITMAP1);

CMFCRibbonPanel* pPanelTool = pCategoryHome->AddPanel(_T("常用工具"), m_TestBImgs.ExtractIcon(0));

CMFCRibbonBtnEx* butn = new CMFCRibbonBtnEx(ID_TESTEX_QUERY, _T("搜索1111"),-1,-1,false);//
    pPanelTool->Add(butn);

CMFCRibbonPanel* pPanelServer = pCategoryHome->AddPanel(_T("地图服务"), m_TestBImgs.ExtractIcon(0));

}



BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
ON_COMMAND(ID_TESTEX_QUERY, &CTestDlg::OnTestexQuery)
ON_UPDATE_COMMAND_UI(ID_TESTEX_QUERY, &CTestDlg::OnUpdateTestexQuery)
END_MESSAGE_MAP()

void CTestDlg::OnTestexQuery()
{
AfxMessageBox(_T("CTestDlg frame  query"));
}
 
------解决思路----------------------
参考Codejock.Xtreme.Suite.Pro.ActiveX源代码?