打算做一个很简单的单文档程序,窗口分割为两行两列,分别实现加减乘除运算,于是新生成了四个类,但是窗口分割之后,创建视图却遇到了问题,下面是源代码:
//静态分割窗口
CRect rc;
GetClientRect(&rc); // 获取框架窗口客户区的CRect对象
// 创建静态分割窗口,两行一列
if (!m_wndSplitter.CreateStatic(this, 2, 2,WS_CHILD|WS_VISIBLE))
return FALSE;
if (!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CAdditionView),CSize(rc.Width()/2,rc.Height()/2),pContext))
return FALSE;
if (!m_wndSplitter.CreateView(0,1,RUNTIME_CLASS(CSubtraction),CSize(rc.Width()/2,rc.Height()/2),pContext))
return FALSE;
if (!m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CMultipline),CSize(rc.Width()/2,rc.Height()/2),pContext))
return FALSE;
if (!m_wndSplitter.CreateView(1,1,RUNTIME_CLASS(CDivisin),CSize(rc.Width()/2,rc.Height()/2),pContext))
return FALSE;
pAddition=(CAdditionView*)m_wndSplitter.GetPane(0,0);
pSubtraction=(CSubtraction*)m_wndSplitter.GetPane(0,1);
pMultipline=(CMultipline*)m_wndSplitter.GetPane(1,0);
pDivision=(CDivisin*)m_wndSplitter.GetPane(1,1);
运行后程序可以成功生成,但是执行的时候会出现这样的问题:
调试发现问题出现在这里:
#ifdef _DEBUG
// dialog template must exist and be invisible with WS_CHILD set
if (!_AfxCheckDialogTemplate(m_lpszTemplateName, TRUE))
{
ASSERT(FALSE); // invalid dialog template name
PostNcDestroy(); // cleanup if Create fails too soon
return FALSE;
}
#endif //_DEBUG
卡在了ASSERT(FALSE); // invalid dialog template name这句,调用堆栈信息显示如下:
但是我显示单文档本身生成的view类时却会正常执行,根本不会执行这一句,不明白是哪里出了问题,在网上找了很多,但是一头雾水,也许是视图类没生成完全,不知道怎么把视图类和文档关联起来,求助各位大神!!