我现在用CSplitterWnd创建了3个窗口,具体代码如下
CSplitterWnd m_wndSplitterH;//用于横向切割
CSplitterWnd m_wndSplitterV;//用于纵向切割
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,
CCreateContext* pContext)
{ m_wndSplitterH.CreateView(0,0,RUNTIME_CLASS(CCNCView),CSize(400,400),pContext);
m_wndSplitterH.CreateView(1,0,RUNTIME_CLASS(CEngraveView),CSize(400,200),pContext);
m_wndSplitterV.CreateView(0,1,RUNTIME_CLASS(CControlForm),CSize(200,600),pContext);//设置窗格的初始化的大小
m_wndSplitterV.SetRowInfo(0,10,0);
m_bCreateSplitter=TRUE;
//激活sceneview使得其可以接受命令消息
m_wndSplitterV.SetActivePane(0,0,NULL);
return bResult;
}
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CRect rect;
GetClientRect(rect);
if (m_bCreateSplitter)
{
m_wndSplitterV.SetColumnInfo(0,rect.Width() *3/4,10);
m_wndSplitterV.SetColumnInfo(1,rect.Width() *1/4,10);
m_wndSplitterH.SetRowInfo(0,rect.Height() *3/4,10);
m_wndSplitterH.SetRowInfo(1,rect.Height() *1/4,10);
}
m_wndSplitterV.RecalcLayout();
m_wndSplitterH.RecalcLayout();
}
编译没有错误,但是在运行的时候总是报错,我不知道是什么原因,还有各个窗口的大小CSize(400,400),是怎么确定的,希望好心的人帮忙解答一下!!!!
CSplitterWnd m_wndSplitterH;//用于横向切割
CSplitterWnd m_wndSplitterV;//用于纵向切割
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,
CCreateContext* pContext)
{ m_wndSplitterH.CreateView(0,0,RUNTIME_CLASS(CCNCView),CSize(400,400),pContext);
m_wndSplitterH.CreateView(1,0,RUNTIME_CLASS(CEngraveView),CSize(400,200),pContext);
m_wndSplitterV.CreateView(0,1,RUNTIME_CLASS(CControlForm),CSize(200,600),pContext);//设置窗格的初始化的大小
m_wndSplitterV.SetRowInfo(0,10,0);
m_bCreateSplitter=TRUE;
//激活sceneview使得其可以接受命令消息
m_wndSplitterV.SetActivePane(0,0,NULL);
return bResult;
}
void CMainFrame::OnSize(UINT nType, int cx, int cy)
{
CRect rect;
GetClientRect(rect);
if (m_bCreateSplitter)
{
m_wndSplitterV.SetColumnInfo(0,rect.Width() *3/4,10);
m_wndSplitterV.SetColumnInfo(1,rect.Width() *1/4,10);
m_wndSplitterH.SetRowInfo(0,rect.Height() *3/4,10);
m_wndSplitterH.SetRowInfo(1,rect.Height() *1/4,10);
}
m_wndSplitterV.RecalcLayout();
m_wndSplitterH.RecalcLayout();
}
编译没有错误,但是在运行的时候总是报错,我不知道是什么原因,还有各个窗口的大小CSize(400,400),是怎么确定的,希望好心的人帮忙解答一下!!!!
ASSERT(bResult);
m_wndSplitterH.CreateStatic(&m_wndSplitterV,2,1,WS_CHILD | WS_VISIBLE,m_wndSplitterV.IdFromRowCol(0,0));//这个是将视图划分为两列不好意思忘写了,这样还是一样的有问题
line:364For information on how your programe ...........see the Visual C++ documentation on asserts
{
m_wndSplitterV.SetColumnInfo(0,rect.Width() *3/4,10);
m_wndSplitterV.SetColumnInfo(1,rect.Width() *1/4,10);
m_wndSplitterH.SetRowInfo(0,rect.Height() *3/4,10);
m_wndSplitterH.SetRowInfo(1,rect.Height() *1/4,10);}
m_wndSplitterV.RecalcLayout();
m_wndSplitterH.RecalcLayout();
=》
if (m_bCreateSplitter)
{
m_wndSplitterV.SetColumnInfo(0,rect.Width() *3/4,10);
m_wndSplitterV.SetColumnInfo(1,rect.Width() *1/4,10);
m_wndSplitterH.SetRowInfo(0,rect.Height() *3/4,10);
m_wndSplitterH.SetRowInfo(1,rect.Height() *1/4,10);m_wndSplitterV.RecalcLayout();
m_wndSplitterH.RecalcLayout();
}
再者,你看看debug哪行出错了,不就知道了?