切换用户的功能区类别

时间:2014-04-27 23:43:20

标签: c++ mfc ribbon ribbon-control

我有一个使用MFC用C ++编写的程序。它有一个功能区UI,Office风格。

我想实现以下功能 - 假设用户突出显示了功能区的类别A,并单击该类别中的按钮,我希望我的程序切换到类别B并为其突出显示以响应该单击

这可能听起来很奇怪,但我确实有一个用例可能没有意识到他需要切换类别的用例,所以我想自动为他做。

可以这样做吗?

1 个答案:

答案 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;
}