why_another_name 2016-10-21 12:23 采纳率: 50%
浏览 1109
已采纳

求助:怎么实现单文档多视图的显示

打算做一个很简单的单文档程序,窗口分割为两行两列,分别实现加减乘除运算,于是新生成了四个类,但是窗口分割之后,创建视图却遇到了问题,下面是源代码:
//静态分割窗口
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类时却会正常执行,根本不会执行这一句,不明白是哪里出了问题,在网上找了很多,但是一头雾水,也许是视图类没生成完全,不知道怎么把视图类和文档关联起来,求助各位大神!!

  • 写回答

2条回答 默认 最新

  • why_another_name 2016-10-22 03:24
    关注

    问题已解决,跟视图类和文档关联没关系,是把对话框的属性style改成了child,现在想想觉得我真笨。。。。。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿