2014-01-30 64 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; 
} 

希望它可以幫助。