哪个达人发发慈悲救救我啊,最近想用VC++做一个三叉视图界面
我查了很多网上资料,大多就是两种方法,我都按照上面的做了,没一个成功显示的
下面是我的代码:工程名为Test
方法一:
首先在CMainFrame中定义两个成员变量
CSplitterWnd m_Splitterwnd1;
CSplitterWnd m_Splitterwnd2;CMainFrame::OnCreateClient()
{
CRect rect;
GetClientRect(&rect);
BOOL bReVal=m_wndSplitter1.CreateStatic(this,2, 1);
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CChildView),CSize(rect.Width(),rect.Height()/2),pContext);
m_wndSplitter1.CreateView(1,0,RUNTIME_CLASS(CTextView),CSize(200,200),pContext);
m_wndSplitter2.CreateStatic(&m_wndSplitter1,1,2,WS_VISIBLE | WS_CHILD | WS_BORDER,
m_wndSplitter1.IdFromRowCol(0,0));
bReVal=m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CTextView),
CSize(100,100),pContext);
bReVal=m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CTextView),CSize(100,100),pContext);
}其中,CChildView是CView的继承类,CTextView是CEditView的继承类
但显示效果只是m_wndSplitter1切分的两行一列效果,后m_wndSplitter2切分的效果没显示方法二:
同样
首先在CMainFrame中先定义成员变量
CSplitterWnd m_Splitterwnd1;
CMainFrame::OnCreateClient()
{
CRect rect;
GetClientRect(&rect);
BOOL bReVal=m_wndSplitter1.CreateStatic(this,2, 1);
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CTestView),CSize(rect.Width(),rect.Height()/2),pContext);
m_wndSplitter1.CreateView(1,0,RUNTIME_CLASS(CTextView),CSize(200,200),pContext);
}然后在CTestView中定义另外一个CSplitterWnd成员变量
CSplitterWnd m_Splitterwnd2;CTestView::OnCreate()
{
CRect rect;
GetWindowRect(&rect);
m_wndSplitter2.CreateStatic(this,1,2);
CCreateContext *pContext = (CCreateContext*) lpCreateStruct->lpCreateParams;
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CTextView),CSize(rect.Width()/4,rect.Height()),pContext);
m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CTextView),CSize(100,100),pContext);
}显示结果同方法一一样,只有两行一列,请达人大哥大姐告诉我怎么回事?
救命啊
我查了很多网上资料,大多就是两种方法,我都按照上面的做了,没一个成功显示的
下面是我的代码:工程名为Test
方法一:
首先在CMainFrame中定义两个成员变量
CSplitterWnd m_Splitterwnd1;
CSplitterWnd m_Splitterwnd2;CMainFrame::OnCreateClient()
{
CRect rect;
GetClientRect(&rect);
BOOL bReVal=m_wndSplitter1.CreateStatic(this,2, 1);
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CChildView),CSize(rect.Width(),rect.Height()/2),pContext);
m_wndSplitter1.CreateView(1,0,RUNTIME_CLASS(CTextView),CSize(200,200),pContext);
m_wndSplitter2.CreateStatic(&m_wndSplitter1,1,2,WS_VISIBLE | WS_CHILD | WS_BORDER,
m_wndSplitter1.IdFromRowCol(0,0));
bReVal=m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CTextView),
CSize(100,100),pContext);
bReVal=m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CTextView),CSize(100,100),pContext);
}其中,CChildView是CView的继承类,CTextView是CEditView的继承类
但显示效果只是m_wndSplitter1切分的两行一列效果,后m_wndSplitter2切分的效果没显示方法二:
同样
首先在CMainFrame中先定义成员变量
CSplitterWnd m_Splitterwnd1;
CMainFrame::OnCreateClient()
{
CRect rect;
GetClientRect(&rect);
BOOL bReVal=m_wndSplitter1.CreateStatic(this,2, 1);
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CTestView),CSize(rect.Width(),rect.Height()/2),pContext);
m_wndSplitter1.CreateView(1,0,RUNTIME_CLASS(CTextView),CSize(200,200),pContext);
}然后在CTestView中定义另外一个CSplitterWnd成员变量
CSplitterWnd m_Splitterwnd2;CTestView::OnCreate()
{
CRect rect;
GetWindowRect(&rect);
m_wndSplitter2.CreateStatic(this,1,2);
CCreateContext *pContext = (CCreateContext*) lpCreateStruct->lpCreateParams;
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CTextView),CSize(rect.Width()/4,rect.Height()),pContext);
m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CTextView),CSize(100,100),pContext);
}显示结果同方法一一样,只有两行一列,请达人大哥大姐告诉我怎么回事?
救命啊
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,
CCreateContext* pContext)
{
return m_wndSplitter.Create(this,
2, 2, // TODO: adjust the number of rows, columns
CSize(10, 10), // TODO: adjust the minimum pane size
pContext);
}
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
if(wndSplitter1.CreateStatic(this,1,2)==NULL)
return FALSE;
if(wndSplitter2.CreateStatic(&wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,wndSplitter1.IdFromRowCol(0, 1))==NULL)
return FALSE; //将第1行2列再分开2行1列
wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CMyTView),CSize(300,750), pContext); //连接cmyview到右上
wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CMyLView),CSize(0,750),pContext); //连接cmylview到右下
wndSplitter1.CreateView(1,0,RUNTIME_CLASS(CMyTreeView),CSize(0,30),pContext); //CMyTreeView到左
return TRUE;
}
if(m_wndSplitter1.CreateStatic(this,1,2)==NULL)
return FALSE;
if(m_wndSplitter2.CreateStatic(&m_wndSplitter1,2,1,WS_CHILD|WS_VISIBLE,
m_wndSplitter1.IdFromRowCol(0,1))==NULL)
return FALSE;
//将第1行2列再分开2行1列
m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CTextView),CSize(300,350),pContext);
//连接cmyview到右上
m_wndSplitter2.CreateView(1,0,RUNTIME_CLASS(CTextView),CSize(300,750),pContext); //连接cmylview到右下
m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CTextView),CSize(100,300),pContext); //CMyTreeView到左
return TRUE;