zoukankan      html  css  js  c++  java
  • MFC BCGPOrganizar例子移值

    1.采用MDI工程。其它的 属性,输出窗口等都不要。

    2.按照BCGPOrganizar 例子先把 ribbon 功能区移植过来。别的默认都没改。

    发现BCGPOrganizar例子中的mainfram是继承于CBCGPFrameWnd,

    而新建的工程 中的mainfram是继承于CBCGPMDIFrameWnd, 这里有个不同,以后要注意

    3.ribbon移值完后运行:

    启动过程有个崩溃,忽略后能 显示出来界面,,关闭界面 又会有一个 崩溃。

    在mainfram中的oncreate函数中 注掉以下代码: 不知道是不是有冲突了,暂时不管

    //if (!m_wndMenuBar.Create(this))
        //{
        //    TRACE0("Failed to create menubar ");
        //    return -1;      // fail to create
        //}

        //m_wndMenuBar.SetBarStyle(m_wndMenuBar.GetBarStyle() | CBRS_SIZE_DYNAMIC);

        //if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
        //    !m_wndToolBar.LoadToolBar(IDR_MAINFRAME, 0, 0, FALSE, 0, 0, IDB_TOOLBAR_HC))
        //{
        //    TRACE0("Failed to create toolbar ");
        //    return -1;      // fail to create
        //}

        //if (!m_wndStatusBar.Create(this) ||
        //    !m_wndStatusBar.SetIndicators(indicators,
        //      sizeof(indicators)/sizeof(UINT)))
        //{
        //    TRACE0("Failed to create status bar ");
        //    return -1;      // fail to create
        //}

        //CString strMainToolbarTitle;
        //strMainToolbarTitle.LoadString(IDS_MAIN_TOOLBAR);
        //m_wndToolBar.SetWindowText(strMainToolbarTitle);

        //// TODO: Delete these three lines if you don't want the toolbar to be dockable
        //m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY);
        //m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
        //EnableDocking(CBRS_ALIGN_ANY);
        //EnableAutoHideBars(CBRS_ALIGN_ANY);
        //DockControlBar(&m_wndMenuBar);
        //DockControlBar(&m_wndToolBar);
     注掉后编译过行正常了

    4.添加2个视图类。

    5.添加2个ribbon.

    6.关联ribbon切换的消息

    7.在doc类中添加createView

    8.在mainfram中重载oncreateclient函数:

    并添加代码:

    COfficeDemoDoc* pDoc = DYNAMIC_DOWNCAST(COfficeDemoDoc, pContext->m_pCurrentDoc);

        if (pDoc != NULL)
        {
            pDoc->CreateViews(this, pContext);
        }

        return CBCGPMDIFrameWnd::OnCreateClient(lpcs, pContext);//  原来这没有MDI.  不知道有没有影响。

    9.运行 到 上面代码的COfficeDemoDoc* pDoc = DYNAMIC_DOWNCAST(COfficeDemoDoc, pContext->m_pCurrentDoc);这一步崩溃,显示pContext为空

    是因为MDI程序和SDI程序处理不一样。

    SDI中可以在oncreateclient中处理,指针不为NULL,

    但是MDI 就不行,是NULL,就报错,还不能这么去 调用createviews.

    但是也建了个SDI的工程,以上面的方法移植了一下,但是视图类若 继承于CBCGPTabView,则 以最大化窗体  运行起来有时候会弹出错误,虽然可以忽略,

    但是不以最大化运行就 正常

    SDI下 不能用BCGPTabView实现切换,切换不了,还卡屏

    放弃用tabview.用属性页试试

  • 相关阅读:
    转 new和malloc的区别
    转 内联函数
    转 C++宏定义详解
    转 内联函数和宏定义的区别
    转 C++中不能声明为虚函数的有哪些函数
    转 PV操作简单理解
    转 Python执行系统命令的方法
    转 常量指针和指针常量的区别详解
    转 python语法学习面向对象之继承
    Singleton、MultiThread、Lib——实现单实例无锁多线程安全API
  • 原文地址:https://www.cnblogs.com/totogo/p/10609028.html
Copyright © 2011-2022 走看看