切分窗口问题

qin119931233 2011-03-02 09:42:00
我把一个窗口切分为3行5个窗口,代码如下:
BOOL CChildFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// CG: The following block was added by the Splitter Bar component.
{
if (!m_dwndSplitter.CreateStatic(this, 3, 1))
{
TRACE0("Failed to create splitter bar ");
return FALSE; // failed to create
}
CRect drect;
GetClientRect(&drect);
int dw,dh;
dw=drect.Width();
dh=(drect.Height()-50)/3;
m_dwndSplitter.SetRowInfo(0,dh,0);
m_dwndSplitter.SetRowInfo(1,dh,0);
m_dwndSplitter.SetRowInfo(2,dh,0);
m_dwndSplitter.SetColumnInfo(0,dw,10);

//将第一行分为两列
if(!m_dwndSplitter1.CreateStatic(&m_dwndSplitter,1,2))
return FALSE;

//将第二行分为两列
if(!m_dwndSplitter2.CreateStatic(&m_dwndSplitter,1,2))
return FALSE;

/////////////////////////// 加载视图 ////////////////////////////////////////////
//第一行左视图
m_dwndSplitter1.CreateView(0,0,RUNTIME_CLASS(CWeiCai),CSize(dw/2,dh),pContext);

//第一行右视图
m_dwndSplitter1.CreateView(0,1,RUNTIME_CLASS(CSndSysView),CSize(dw/2,dh),pContext);

//第二行左视图
m_dwndSplitter2.CreateView(1,0,RUNTIME_CLASS(CHangXiang),CSize(dw/2,dh),pContext); //第二行右视图
m_dwndSplitter2.CreateView(1,1,RUNTIME_CLASS(CPuBu),CSize(dw/2,dh),pContext);

//第三行视图
m_dwndSplitter.CreateView(2,0,RUNTIME_CLASS(CDeepView),CSize(dw,dh),pContext);


return TRUE;
}
}

语法没有问题,运行就会出现以下对话框:
Degub Assertion is Failed
Program:.....StaticSplitter.exe
File:winSplit.cpp
Line:245

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)


然后是三个按钮分别是:终止,重试,忽略

我单步调试到第二行左视图的时候就出现了上述对话框。大家帮我看看吧!

...全文
52 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2011-03-02
  • 打赏
  • 举报
回复

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
{
// TODO: Add your specialized code here and/or call the base class
if(!m_wndSplitter.CreateStatic(this, 3, 1))
{
return FALSE;
}

if(!m_wndSplitter1.CreateStatic(&m_wndSplitter, 1, 2, WS_CHILD | WS_VISIBLE, m_wndSplitter.IdFromRowCol(0, 0)))
{
return FALSE;
}

if(!m_wndSplitter2.CreateStatic(&m_wndSplitter, 1, 2, WS_CHILD | WS_VISIBLE, m_wndSplitter.IdFromRowCol(1, 0)))
{
return FALSE;
}
m_wndSplitter1.CreateView(0, 0, RUNTIME_CLASS(CAAAView), CSize(200, 200), pContext);

m_wndSplitter1.CreateView(0, 1, RUNTIME_CLASS(CAAAView), CSize(200, 200), pContext);

m_wndSplitter2.CreateView(0, 0, RUNTIME_CLASS(CAAAView), CSize(200, 200), pContext);
m_wndSplitter2.CreateView(0, 1, RUNTIME_CLASS(CAAAView), CSize(200, 200), pContext);

m_wndSplitter.CreateView(2, 0, RUNTIME_CLASS(CAAAView), CSize(200, 200), pContext);

return TRUE;
//return CFrameWnd::OnCreateClient(lpcs, pContext);
}
W170532934 2011-03-02
  • 打赏
  • 举报
回复
点击重试,跟进去看看嘛。要注意栈里的函数哦。
手机写程序 2011-03-02
  • 打赏
  • 举报
回复
跟踪进CreateView去看看。

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧