我想得到以下窗口分割,如何做?
------------------------------------
CMessageView
------------------------------------
CCurrentPathView |
---------------- | CRemoteDirView
CLocalDirView |
-------------------------------------
CLogView
-------------------------------------我写的如下,不过出错了。faint!!!!BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext *pContext)
{
//以下语句创建窗口分割
if (!m_wndSplitter.CreateStatic(this, 4, 1))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
} // 创建ftp消息窗口
if (!m_wndSplitter.CreateView(0, 0,
RUNTIME_CLASS(CMessageView), CSize(0,100), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
} // 创建一个有两列的窗口
if (!m_wndSplitterPath.CreateStatic(
&m_wndSplitter, // our parent window is the first splitter
1, 2, // the new splitter is 1 rows, 2 column
WS_CHILD | WS_VISIBLE,
m_wndSplitter.IdFromRowCol(1, 0)
// new splitter is in the first row, 2nd column of first splitter
))
{
TRACE0("Failed to create nested splitter\n");
return FALSE;
}
//Create remote path view
if (!m_wndSplitterPath.CreateView(0, 1,
RUNTIME_CLASS(CRemotePathView), CSize(300, 300), pContext))
{
TRACE0("Failed to create third pane\n");
return FALSE;
} //创建本地路径视图
if (!m_wndSplitterLocal.CreateStatic(
&m_wndSplitterPath,
2, 1,
WS_CHILD | WS_VISIBLE,
m_wndSplitterPath.IdFromRowCol(0, 0)))
{
TRACE0("Failed to create local path view splitter\n");
return FALSE;
}
if (!m_wndSplitterLocal.CreateView(0, 0,
RUNTIME_CLASS(CCurrentPathView), CSize(100,10), pContext))
{
TRACE0("Failed to create currentpath view\n");
return FALSE;
}
if (!m_wndSplitterLocal.CreateView(1, 0,
RUNTIME_CLASS(CLocalDirView), CSize(100, 300), pContext))
{
TRACE0("Failed to create localdir splitter \n");
return FALSE;
}
m_wndSplitter.SetRowInfo( 0,100,100);
m_wndSplitter.SetRowInfo( 1,10,10);
m_wndSplitter.SetRowInfo( 2,50,30);
m_wndSplitter.SetColumnInfo(0,50,30);
//创建log窗口
if (!m_wndSplitter.CreateView(2, 0,
RUNTIME_CLASS(CLogView), CSize(0, 100), pContext))
{
TRACE0("Failed to create log pane\n");
return FALSE;
}
m_wndSplitterPath.RecalcLayout();
m_wndSplitter.RecalcLayout();
return TRUE;
}
------------------------------------
CMessageView
------------------------------------
CCurrentPathView |
---------------- | CRemoteDirView
CLocalDirView |
-------------------------------------
CLogView
-------------------------------------我写的如下,不过出错了。faint!!!!BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext *pContext)
{
//以下语句创建窗口分割
if (!m_wndSplitter.CreateStatic(this, 4, 1))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
} // 创建ftp消息窗口
if (!m_wndSplitter.CreateView(0, 0,
RUNTIME_CLASS(CMessageView), CSize(0,100), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
} // 创建一个有两列的窗口
if (!m_wndSplitterPath.CreateStatic(
&m_wndSplitter, // our parent window is the first splitter
1, 2, // the new splitter is 1 rows, 2 column
WS_CHILD | WS_VISIBLE,
m_wndSplitter.IdFromRowCol(1, 0)
// new splitter is in the first row, 2nd column of first splitter
))
{
TRACE0("Failed to create nested splitter\n");
return FALSE;
}
//Create remote path view
if (!m_wndSplitterPath.CreateView(0, 1,
RUNTIME_CLASS(CRemotePathView), CSize(300, 300), pContext))
{
TRACE0("Failed to create third pane\n");
return FALSE;
} //创建本地路径视图
if (!m_wndSplitterLocal.CreateStatic(
&m_wndSplitterPath,
2, 1,
WS_CHILD | WS_VISIBLE,
m_wndSplitterPath.IdFromRowCol(0, 0)))
{
TRACE0("Failed to create local path view splitter\n");
return FALSE;
}
if (!m_wndSplitterLocal.CreateView(0, 0,
RUNTIME_CLASS(CCurrentPathView), CSize(100,10), pContext))
{
TRACE0("Failed to create currentpath view\n");
return FALSE;
}
if (!m_wndSplitterLocal.CreateView(1, 0,
RUNTIME_CLASS(CLocalDirView), CSize(100, 300), pContext))
{
TRACE0("Failed to create localdir splitter \n");
return FALSE;
}
m_wndSplitter.SetRowInfo( 0,100,100);
m_wndSplitter.SetRowInfo( 1,10,10);
m_wndSplitter.SetRowInfo( 2,50,30);
m_wndSplitter.SetColumnInfo(0,50,30);
//创建log窗口
if (!m_wndSplitter.CreateView(2, 0,
RUNTIME_CLASS(CLogView), CSize(0, 100), pContext))
{
TRACE0("Failed to create log pane\n");
return FALSE;
}
m_wndSplitterPath.RecalcLayout();
m_wndSplitter.RecalcLayout();
return TRUE;
}
ASSERT(pView != NULL); // panes can be a CWnd, but are usually CViews不过我那个确实是CView派生的。
应该是3吧
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
} // 创建ftp消息窗口
if (!m_wndSplitter.CreateView(0, 0,
RUNTIME_CLASS(CMultiViewView), CSize(0,100), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}
if (!m_wndSplitter.CreateView(2, 0,
RUNTIME_CLASS(CMultiViewView), CSize(20,100), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}
if(!m_wndMidSplitter.CreateStatic(&m_wndSplitter, 1, 2,WS_CHILD | WS_VISIBLE,m_wndSplitter.IdFromRowCol(1, 0) ))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
if (!m_wndMidSplitter.CreateView(0, 1,
RUNTIME_CLASS(CMultiViewView), CSize(20,100), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}
if(!m_wndSmallSplitter.CreateStatic(&m_wndMidSplitter, 2, 1,WS_CHILD | WS_VISIBLE,m_wndMidSplitter.IdFromRowCol(0, 0) ))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
if (!m_wndSmallSplitter.CreateView(0, 0,
RUNTIME_CLASS(CMultiViewView), CSize(20,100), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}
if (!m_wndSmallSplitter.CreateView(1, 0,
RUNTIME_CLASS(CMultiViewView), CSize(20,100), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}
m_wndSplitter.SetRowInfo(0,100,10);
m_wndSplitter.SetRowInfo(1,100,10);
m_wndSplitter.SetRowInfo(2,100,10);
m_wndMidSplitter.SetColumnInfo(0,100,10);
m_wndMidSplitter.SetColumnInfo(1,100,10);
m_wndSmallSplitter.SetRowInfo(0,100,10);
m_wndSmallSplitter.SetRowInfo(1,100,10);
m_wndSplitter.RecalcLayout();
m_wndMidSplitter.RecalcLayout();
m_wndSmallSplitter.RecalcLayout();