MFC功能区控件和AFX_WM_ON_CHANGE_RIBBON_CATEGORY

时间:2014-01-30 02:39:05

标签: winapi mfc

A有一个带有Ribbon控件的窗口。功能区控件有三个类别...我有AFX_WM_ON_CHANGE_RIBBON_CATEGORY消息的处理程序:

LPARAM CMainFrame::OnRibbonCategoryChanged(WPARAM wp, LPARAM lp)
{
    CMFCRibbonCategory *pCategory=m_wndRibbonBar.GetActiveCategory();
    int nCategory=m_wndRibbonBar.GetCategoryIndex(pCategory);

    return 0;
}

当我在Windows7机器上启动此应用程序时,我的类别有索引:1,2,3,但如果我在Windows Server 2008上启动相同的应用程序,则索引将为0,1,2 ......

是BUG吗?如何让它在不同的平台上运行?

1 个答案:

答案 0 :(得分:1)

我建议您使用类别名称而不是其索引。

示例:

LPARAM CMainFrame::OnRibbonCategoryChanged(WPARAM wp, LPARAM lp)
{
    CMFCRibbonCategory *pCategory=m_wndRibbonBar.GetActiveCategory();

    CString strCatName(pCategory->GetName());

    if (strCatName.CompareNoCase(_T("Home")) == 0)
    {
        // Do something
    }
    else if (strCatName.CompareNoCase(_T("My Category")) == 0)
    {
        // Do something
    }

    return 0;
}

希望它可以提供帮助。