【问题标题】:Switching between different ribbons in an MDI application在 MDI 应用程序中的不同功能区之间切换
【发布时间】:2014-11-13 16:37:22
【问题描述】:

我想在我的应用程序中为不同的 MDI 子框架在不同的功能区之间切换。我知道旧式菜单可以使用,但我无法使用功能包功能区。

旧式菜单时使用的代码:

pDocTemplate = new CMultiDocTemplate(
    IDR_MAINFRAME,//Menu to load
    RUNTIME_CLASS(CModDoc),
    RUNTIME_CLASS(CModFrame), // custom MDI child frame
    RUNTIME_CLASS(CdotView));
if (!pDocTemplate)
    return FALSE;
AddDocTemplate(pDocTemplate);

pDocTemplate = new CMultiDocTemplate(
    IDR_RES_RNGACTIV,//Menu to load
    RUNTIME_CLASS(CModRangeDoc),
    RUNTIME_CLASS(CModRangeFrame), //custom MDI child frame
    RUNTIME_CLASS(CBlankView));
if (!pDocTemplate)
    return FALSE;
AddDocTemplate(pDocTemplate);

我正在考虑的另一种方法是卸载当前功能区并从资源中加载新功能区?

//Unload ribbon code?
m_wndRibbonBar.LoadFromResource(IDR_RIBBON);

【问题讨论】:

    标签: c++ mfc ribbon mdi mfc-feature-pack


    【解决方案1】:

    如果你不需要多个CMFCRibbonBar对象,你可以使用CMFCRibbonBar::LoadFromResource,然后你必须使用CMFCRibbonBar::RecalcLayout方法将更改应用到用户界面. 请记住检查CMFCRibbonBar::LoadFromResource 的返回值以确保加载成功,并且调用CMFCRibbonBar::RecalcLayout 非常重要,否则您将看不到新的功能区。

    【讨论】:

    • 可惜正确答案来得太晚了,但是MFC标签没怎么关注啊哈哈哈
    • 你是对的,但在某些情况下你特别想要不同的功能区,因为只有上下文类别是不够的。您可以考虑拥有不同的个人资料,但也有一些功能区状态可能有用,但我从来没有花时间研究它们。
    【解决方案2】:

    我最终隐藏了原来的功能区栏,然后加载并显示了一个新功能区。不确定这是否是最好的方法。

        CMultiDocTemplate *pDoc = GetDocTemplate(7);
        if (pDoc)
        {
            CFloorActivDoc* pDocument = (CFloorActivDoc*)pDoc->CreateNewDocument();
            CFloorFrame* pFrame = (CFloorFrame*)pDoc->CreateNewFrame(pDocument, NULL);
            if (pFrame)
            {
                pDoc->InitialUpdateFrame(pFrame, pDocument);
                m_wndRibbonBar.ShowPane(FALSE, FALSE, TRUE);//Hide original ribbon
                m_FloorRibbonBar.Create(this);
                m_FloorRibbonBar.LoadFromResource(IDR_RIBBON_FLOORACT);
            }
    

    【讨论】:

      猜你喜欢
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      相关资源
      最近更新 更多