【问题标题】:Is it possible to remove CMFCRibbonPanel from CMFCRibbonCategory?是否可以从 CMFCRibbonCategory 中删除 CMFCRibbonPanel?
【发布时间】:2010-10-10 01:35:15
【问题描述】:

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

我真的需要重建我的整个CMFCRibbonCategory 来执行此操作吗?

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

【问题讨论】:

    标签: c++ visual-c++ mfc mfc-feature-pack


    【解决方案1】:

    就我而言,我确实最终从头开始重建类别。在CMFCRibbonCategory 源代码(查找afxribboncategory.cpp)中,没有明显的方法可以从面板数组中删除面板。

    【讨论】:

    • 是的,我也采用了这个解决方案!我添加了连接请求!请在这里投票:connect.microsoft.com/VisualStudio/feedback/…
    • 我也是。但我并不介意,因为我想删除所有面板,所以我只是添加了一个新类别并删除了旧类别。但仍然不如 CMFCCategory::RemoveAllPanels 本来...
    【解决方案2】:

    我对@9​​87654322@ 和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();
         }
    }
    

    【讨论】:

    • 我想删除 pPanel 本身,而不是面板中的元素。顺便说一句:您应该使用 while (pPanel->GetCount()) { VERIFY(pPanel->Remove(0));插入 pPanel->RemoveAll();见connect.microsoft.com/VisualStudio/feedback/…
    • 我知道这就像 3 年前一样,无论如何感谢您在未来帮助我。
    猜你喜欢
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    • 2016-06-03
    • 2017-10-13
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多