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\n");
// 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\n");
// return -1; // fail to create
//}
//if (!m_wndStatusBar.Create(this) ||
// !m_wndStatusBar.SetIndicators(indicators,
// sizeof(indicators)/sizeof(UINT)))
//{
// TRACE0("Failed to create status bar\n");
// 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.用属性页试试