为用户切换功能区类别 我有一个用MFC编写的C++程序。它有一个功能区用户界面,办公室风格

为用户切换功能区类别 我有一个用MFC编写的C++程序。它有一个功能区用户界面,办公室风格,c++,mfc,ribbon,ribbon-control,C++,Mfc,Ribbon,Ribbon Control,我想实现以下目标-假设用户高亮显示了功能区的类别A,并单击了该类别中的按钮,我希望我的程序切换到类别B,并为他高亮显示该类别,以响应该单击 这听起来可能很奇怪,但我确实有一个用例,用户可能没有意识到他需要切换类别,所以我想自动为他切换类别 这可以做到吗?也许你正在寻找 还有一个类似的问题,其中包括一个示例函数,用于以编程方式按名称选择类别。以下转载供参考: int CYourClassName::ActivateCategoryByName( CString strCategoryName) {

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

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


这可以做到吗?

也许你正在寻找

还有一个类似的问题,其中包括一个示例函数,用于以编程方式按名称选择类别。以下转载供参考:

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;
}
int CYourClassName::ActivateCategoryByName(CString strCategoryName)
{
//抓取指向大型机的指针
CMainFrame*pMainFrame=(CMainFrame*)AfxGetMainWnd();
//抓取指向RibbonBar的指针
CMFCRibbonBar*pmrb=&pMainFrame->m_wndRibbonBar;
//获取类别计数
int nCategoryCount=pmrb->GetCategoryCount();
//扫描类别
对于(int-nCategoryNdx=0;nCategoryNdxGetCategory(nCategoryNdx);
//获取类别名称
CString strName=pmrc->GetName();
//检查请求的类别
if(strName==strCategoryName)
{
pmrb->ShowCategory(nCategoryNdx,真);
pmrb->SetActiveCategory(pmrc,TRUE);
返回nCategoryNdx;
}
}
返回-1;
}