У меня есть программа, написанная на C ++ с использованием MFC. Он имеет ленточный интерфейс, офисный стиль.
Я хотел бы добиться следующего: предположим, что пользователь выделил категорию A ленты и нажал кнопку в этой категории, я бы хотел, чтобы моя программа переключилась на категорию B и выделил его для него в ответ на этот щелчок.
Это может показаться странным, но у меня действительно есть случай использования, когда пользователь может не осознавать, что ему нужно переключать категории, поэтому я хотел бы сделать это для него автоматически.
Можно ли это сделать?
Возможно, вы ищете CMFCRibbonBar::SetActiveCategory
.
Есть похожий вопрос на 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;
}