我定义了三个View:CReadView, CWriteView, CllView,准备将界面切分成三大部分:
在CMainFrame定义一下两变量:
CSplitterWnd m_wndSplitter;
CSplitterWnd m_wndSplitter1;
在CMainFrame::OnCreateClient中的实现代码如下:
m_wndSplitter.CreateStatic(this, 1, 2, WS_CHILD|WS_VISIBLE|WS_BORDER); m_wndSplitter1.CreateStatic(&m_wndSplitter, 2, 1,
WS_CHILD|WS_VISIBLE|WS_BORDER,
m_wndSplitter.IdFromRowCol(0, 1)); m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CBoardView), CSize(200,200), pContext);
m_wndSplitter1.CreateView(0, 0, RUNTIME_CLASS(CThinkerView), CSize(200,0), pContext);
m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS(CArticleView), CSize(0,0), pContext);
SetActiveView((CBoardView*)m_wndSplitter.GetPane(0,0));
m_wndSplitter.SetRowInfo(0, 400,0);调试过程中返回值也都正确,可是界面出来后,仍然是一个大界面,大侠请帮我看一下是哪里问题?
在CMainFrame定义一下两变量:
CSplitterWnd m_wndSplitter;
CSplitterWnd m_wndSplitter1;
在CMainFrame::OnCreateClient中的实现代码如下:
m_wndSplitter.CreateStatic(this, 1, 2, WS_CHILD|WS_VISIBLE|WS_BORDER); m_wndSplitter1.CreateStatic(&m_wndSplitter, 2, 1,
WS_CHILD|WS_VISIBLE|WS_BORDER,
m_wndSplitter.IdFromRowCol(0, 1)); m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CBoardView), CSize(200,200), pContext);
m_wndSplitter1.CreateView(0, 0, RUNTIME_CLASS(CThinkerView), CSize(200,0), pContext);
m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS(CArticleView), CSize(0,0), pContext);
SetActiveView((CBoardView*)m_wndSplitter.GetPane(0,0));
m_wndSplitter.SetRowInfo(0, 400,0);调试过程中返回值也都正确,可是界面出来后,仍然是一个大界面,大侠请帮我看一下是哪里问题?
//return CFrameWnd::OnCreateClient(lpcs, pContext);
换成
return true;
就行了
再给你一个我写的step by step
希望对你有帮助Step by Step
Step 1.首先Ctrl+W添加两个新类
CMyListView : CListView
CMyTreeView : CTreeViewStep 2.然后Project->Add to Project->Components and Controls
进入Visual C++ Components文件夹
选择添加Splitter Bar
一路OK就OK3.你会发现在CMainFrame中发现增加了一下函数
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
删除其中所有的内容
添加以下代码
m_wndSplitter.CreateStatic(this ,1, 2);
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CTreeView), CSize(202, 0), pContext);
m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CListView), CSize(0, 0), pContext);return TRUE;Step 4.加入CTreeView,CListView的头文件即可Step 5.如有任何问题,可以发信给我
[email protected]
我尽力帮你解决---------------------------
May you succeed!
-------------------------------
如何写三分窗口
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// CG: The following block was added by the Splitter Bar component. m_wndSplitter.CreateStatic(this ,1, 2);
m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CTestView), CSize(202, 0), pContext);
m_wndSplitter2.CreateStatic(&m_wndSplitter, 2, 1, WS_CHILD|WS_VISIBLE, m_wndSplitter.IdFromRowCol(0,1));
m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CTestView), CSize(0, 150), pContext);
m_wndSplitter2.CreateView(1, 0, RUNTIME_CLASS(CTestView), CSize(0, 0), pContext);
return TRUE;
}
必须返回真
{
CRect rect;
//GetClientRect(&rect);
GetWindowRect(&rect);
CSize panSize1(rect.Width()/2,rect.Height());
CSize panSize2(rect.Width()/2,rect.Height()/2);
m_splitterWnd.CreateStatic(this,1,2);
m_splitterWndH.CreateStatic(&m_splitterWnd,2,1,WS_CHILD | WS_VISIBLE|WS_BORDER,
m_splitterWnd.IdFromRowCol(0, 1));
if (!m_splitterWnd.CreateView(0,0,RUNTIME_CLASS(CCutWindowView),panSize1,pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}
if (!m_splitterWndH.CreateView(0,0,RUNTIME_CLASS(CView2),panSize2,NULL))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}
if (!m_splitterWndH.CreateView(1,0,RUNTIME_CLASS(CView2),panSize2,NULL))
{
TRACE0("Failed to create second pane\n");
return FALSE;
}
return true;}