又是新建视图出问题

烂番 2008-03-24 08:02:24
要新建一个视图,总是会弹出assert错误“afxwin2.inl, line39”,代码如下

POSITION pos = ::AfxGetApp()->GetFirstDocTemplatePosition();
CDocTemplate *pDocTmp=::AfxGetApp()->GetNextDocTemplate(pos);
if(pDocTmp == NULL)
{
AfxMessageBox("Get doc template failed!");
return;
}

CDocument *doc = pDocTmp->CreateNewDocument();
CFrameWnd *pFrm = pDocTmp->CreateNewFrame(doc, NULL);

CCreateContext context;
context.m_pNewViewClass = RUNTIME_CLASS(CVisualEditView);
context.m_pCurrentDoc = doc;
context.m_pLastView = NULL;
context.m_pCurrentFrame = pFrm;
context.m_pNewDocTemplate = NULL;

CRichEditView *pView = (CRichEditView*)pFrm->CreateView(&context);

//doc->SetPathName(page, TRUE);
pDocTmp->InitialUpdateFrame(pFrm, doc);


奇怪的是,把同样的代码复制到另一个程序中的 OnFileNew中 却是运行正常的
上面的代码是一个CMainFrame处理一个对话框的消息的函数中用的。
...全文
116 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
烂番 2008-03-26
  • 打赏
  • 举报
回复
噢,解决了, 是view里面的 新建时会发生异常
另外使用默认的文档模创建的frame就已经带view,再新建view就重复了

谢谢楼上的了
iyranly 2008-03-25
  • 打赏
  • 举报
回复
////////////////////////////////////////////////////////////////
Assert 断言处理
1、在VC安装目录下搜出错文件(afxwin2.inl);
2、按Ctrl+g找到Assert提示的错误行(39),看看是在哪一个函数中发生的断言,判断这是由于哪一方面出现的断言(如控件的创建,等等);
3、在你的程序中设置断点,断点跟踪一下你的代码,直到找到和错误最接近的代码口;
4、修改你的代码。
////////////////////////////////////////////////////////////////
hanjinchidm 2008-03-25
  • 打赏
  • 举报
回复
顶一下。

15,979

社区成员

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

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