我有一个使用MFC用C ++编写的程序。它有一个功能区UI,Office风格。
我想实现以下功能 - 假设用户突出显示了功能区的类别A,并单击该类别中的按钮,我希望我的程序切换到类别B并为其突出显示以响应该单击
这可能听起来很奇怪,但我确实有一个用例可能没有意识到他需要切换类别的用例,所以我想自动为他做。
可以这样做吗?
答案 0 :(得分:1)
也许您正在寻找CMFCRibbonBar::SetActiveCategory
。
有一个类似的问题on CodeProject,其中包含一个样本函数,用于按名称以编程方式选择类别。转载如下以获取信息:
int CYourClassName::ActivateCategoryByName( CString strCategoryName)
{
// Grab Pointer to MainFrame
CMainFrame* pMainFrame = ( CMainFrame*) AfxGetMainWnd();
// Grab Pointer to RibbonBar
CMFCRibbonBar* pmrb = &pMainFrame->m_wndRibbonBar;
// Get Category Count
int nCategoryCount = pmrb->GetCategoryCount();
// Scan Category
for ( int nCategoryNdx = 0; nCategoryNdx < nCategoryCount; nCategoryNdx++)
{
// Grab Pointer to Category
CMFCRibbonCategory* pmrc = pmrb->GetCategory( nCategoryNdx);
// Get Category Name
CString strName = pmrc->GetName();
// Check for Requested Category
if ( strName == strCategoryName)
{
pmrb->ShowCategory( nCategoryNdx, TRUE);
pmrb->SetActiveCategory( pmrc, TRUE);
return nCategoryNdx;
}
}
return -1;
}