BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { // TODO: 在此添加专用代码和/或调用基类 m_splitterWnd.CreateStatic(this,2,1); m_splitterWnd2.CreateStatic(&m_splitterWnd,1,2); CRect rect; GetClientRect(&rect); /*m_splitterWnd.CreateView(0,0,RUNTIME_CLASS(CSpiltterWndView),CSize(0,0),pContext); m_splitterWnd.CreateView(0,1,RUNTIME_CLASS(CMyFormView),CSize(0,0),pContext); m_splitterWnd2.CreateView(1,0,RUNTIME_CLASS(CMyScrollView),CSize(0,0),pContext);*/ return CFrameWnd::OnCreateClient(lpcs, pContext); }
//if (!pDocTemplate) // return FALSE; //AddDocTemplate(pDocTemplate); //// 分析标准外壳命令、DDE、打开文件操作的命令行 //CCommandLineInfo cmdInfo; //ParseCommandLine(cmdInfo); //// 调度在命令行中指定的命令。如果 //// 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。 //if (!ProcessShellCommand(cmdInfo)) // return FALSE; CMainFrame* pTmpMainFrame=new CMainFrame; pTmpMainFrame->LoadFrame(IDR_MAINFRAME); m_pMainWnd=pTmpMainFrame; // 唯一的一个窗口已初始化,因此显示它并对其进行更新 m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); // 仅当具有后缀时才调用 DragAcceptFiles // 在 SDI 应用程序中,这应在 ProcessShellCommand 之后发生 return TRUE; }
m_splitterWnd2.CreateStatic(&m_splitterWnd,1,2);
你的最后一个默认参数是把m_splitterWnd的第一个空位给占了
m_splitterWnd.CreateView(0,0,RUNTIME_CLASS(CSpiltterWndView),CSize(0,0),pContext);也是占第一个空位,所以出现故障.
如果你的split2是嵌套在split1里面的,应该使用CSplitterWnd::IdFromRowCol()规划一下
split2和view1在split1里面,view2,view3在split2里面...
以下是我以前程序中实现的窗口切分代码,楼主可以参考下:
if (!m_wndSplitter.CreateStatic(this, 1, 2))
return false;
CRect rect;
GetClientRect(&rect);
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CViewParam), CSize(rect.Width()- 220, rect.Height()), pContext))
return false;
m_pviewparam = (CViewParam*)m_wndSplitter.GetPane(0,0);
if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CViewInfo), CSize(220, rect.Height()), pContext))
return false;
m_pviewinfo = (CViewInfo*)m_wndSplitter.GetPane(0,1);
return CFrameWnd::OnCreateClient(lpcs, pContext);
if(!m_wndSplitter.CreateStatic(this,1,2))
{
TRACE("Failed to Create m_wndSplitter");
return false;
}
if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CDeviceTreeView),CSize(0,0),pContext))
{
TRACE("Failed to Create CDeviceTreeView!");
return false;
}
if(!m_wndSplitter2.CreateStatic(&m_wndSplitter,2,1,WS_CHILD|WS_VISIBLE|TCS_FLATBUTTONS,m_wndSplitter.IdFromRowCol(0,1)))
{
TRACE("Failed to Create COperatorTabCtrl!");
return false;
}
if(!m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CMsgListView),CSize(0,0),pContext))
{
TRACE("Failed to Create CMsgListView!");
return false;
}