2014-01-30 31 views
0

A有一个带有Ribbon控件的窗口。功能区控制有三类它...我有处理程序AFX_WM_ON_CHANGE_RIBBON_CATEGORY消息:MFC 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?如何使它在不同的平台上工作?

+0

只是一个想法:在Windows 2008上,你有没有启用视觉主题。您通常只启用Windows经典主题。可能会有所作为。将Windows 7切换到经典主题并再次检查。无论如何 – xMRi

回答

0

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

例子:

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

希望它可以帮助。