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.用属性页试试

  • 相关阅读:
    linux下启动和关闭网卡命令及DHCP上网
    python 编码问题
    paddlepaddle
    Convolutional Neural Network Architectures for Matching Natural Language Sentences
    deep learning RNN
    Learning Structured Representation for Text Classification via Reinforcement Learning 学习笔记
    Python IO密集型任务、计算密集型任务,以及多线程、多进程
    EM 算法最好的解释
    tensorflow 调参过程
    tensorflow 学习纪录(持续更新)
  • 原文地址:https://www.cnblogs.com/totogo/p/10609028.html
Copyright © 2011-2022 走看看