Winapi MFC功能区控件和AFX功能区上的WM功能区更改功能区类别

Winapi MFC功能区控件和AFX功能区上的WM功能区更改功能区类别,winapi,mfc,Winapi,Mfc,A具有带功能区控件的窗口。功能区控件中有三个类别。。。我有AFX\U WM\U上的处理程序\U更改\U功能区\U类别消息: LPARAM CMainFrame::OnRibbonCategoryChanged(WPARAM wp, LPARAM lp) { CMFCRibbonCategory *pCategory=m_wndRibbonBar.GetActiveCategory(); int nCategory=m_wndRibbonBar.GetCategoryIndex(p

A具有带功能区控件的窗口。功能区控件中有三个类别。。。我有AFX\U WM\U上的处理程序\U更改\U功能区\U类别消息:

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


是虫子吗?如何使它在不同的平台上工作?

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

例如:

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

希望能有所帮助。

这只是一个想法:在Windows 2008上,通常没有启用视觉主题。通常只启用Windows经典主题。也许这会有所不同。将Windows 7切换到经典主题,然后再次检查。无论如何