C++ 是否可以从CMFCRibbonCategory中删除CMFCRibbonPanel?

C++ 是否可以从CMFCRibbonCategory中删除CMFCRibbonPanel?,c++,visual-c++,mfc,mfc-feature-pack,C++,Visual C++,Mfc,Mfc Feature Pack,我正在寻找从CMFCRibbonCategory中删除CMFCRibbonPanel的技巧。CMFCRibbonCategory中只有AddPanel函数,但没有RemovePanel 要做到这一点,我真的需要重建整个CMFCRibbonCategory吗 为了澄清,我想从类别中删除面板本身,而不是从面板中删除元素。我对CMFCRibbonPanel和CMFCRibbonCategory一无所知。在看到MSDN中的类声明后,我认为您可以从CMFCRibbonCategory获取对CMFCRibb

我正在寻找从CMFCRibbonCategory中删除CMFCRibbonPanel的技巧。CMFCRibbonCategory中只有AddPanel函数,但没有RemovePanel

要做到这一点,我真的需要重建整个CMFCRibbonCategory吗


为了澄清,我想从类别中删除面板本身,而不是从面板中删除元素。

我对CMFCRibbonPanel和CMFCRibbonCategory一无所知。在看到MSDN中的类声明后,我认为您可以从CMFCRibbonCategory获取对CMFCRibbonPanel的引用,并在指针上调用CMFCRibbonPanel::RemoveAll

CMFCRibbonCategory *pCategory = m_wndRibbonBar.GetCategory(0);

if (pCategory)
{
     CMFCRibbonPanel *pPanel = pCategory->GetPanel(0);

     if (pPanel)
     {
        pPanel->RemoveAll();
        m_wndRibbonBar.AdjustSizeImmediate();
     }
}

我对CMFCRibbonPanel和CMFCRibbonCategory一无所知。在看到MSDN中的类声明后,我认为您可以从CMFCRibbonCategory获取对CMFCRibbonPanel的引用,并在指针上调用CMFCRibbonPanel::RemoveAll

CMFCRibbonCategory *pCategory = m_wndRibbonBar.GetCategory(0);

if (pCategory)
{
     CMFCRibbonPanel *pPanel = pCategory->GetPanel(0);

     if (pPanel)
     {
        pPanel->RemoveAll();
        m_wndRibbonBar.AdjustSizeImmediate();
     }
}

在我的例子中,我最终确实从头开始重建了这个类别。在CMFCRibbonCategory源代码中查找afxribboncategory.cpp,没有明显的方法可以从panels数组中删除面板。

在我的例子中,我确实从头开始重建了类别。在CMFCRibbonCategory源代码中查找afxribboncategory.cpp,没有明显的方法从panels数组中删除panel。

我想删除pPanel本身,而不是panel中的元素。顺便说一句:您应该使用whileppanel->GetCount{VERIFYpPanel->Remove0;}代替pPanel->RemoveAll;看,我知道这是3年前的事了,不管怎样,谢谢你在将来帮助我。我想删除pPanel本身,而不是面板中的元素。顺便说一句:您应该使用whileppanel->GetCount{VERIFYpPanel->Remove0;}代替pPanel->RemoveAll;看,我知道这是3年前的事了,不管怎样,谢谢你在未来帮助我。是的,我也最终得到了这个解决方案!我添加了连接请求!请在这里投票:我也是。但我并不介意,因为我想删除所有面板,所以我只添加了一个新类别,删除了旧类别。但仍然不如CMFCCategory::RemoveAllPanels那么好……是的,我也最终使用了这个解决方案!我添加了连接请求!请在这里投票:我也是。但我并不介意,因为我想删除所有面板,所以我只添加了一个新类别,删除了旧类别。但仍然不如CMFCCategory::RemoveAllPanels所能做到的那样好。。。