2 xuruihu XURUIHU 于 2014.12.01 22:15 提问

VS2012空文档创建失败是怎么回事?

我只是添加了一个CDialogBar类的对象m_myDlg,在CMainFrame中的OnCreate()函数添加了一下代码

       if(!m_myDlg.Create(this,IDD_FLOAT_DLG,CBRS_TOP|CBRS_HIDE_INPLACE,IDD_FLOAT_DLG))
{
    TRACE0("failed to create dialog bar m_myDlg");
    return -1;
}
m_myDlg.EnableDocking(CBRS_ALIGN_TOP);
EnableDocking(CBRS_ALIGN_TOP);
DockControlBar(&m_myDlg);

编译时却出现这种错误:Debug assertion failed,这是怎么回事

2个回答

eagleyan
eagleyan   Rxr 2014.12.02 08:54
已采纳

你现在正编译debug版,而不是release版,就出这个错.
检查一下你的资源IDD_FLOAT_DLG创建了没有

eagleyan
eagleyan 在debug版本不允许直接DockControlBar(&m_myDlg);而必须DockControlBar(&m_myDlg,AFX_IDW_DOCKBAR_TOP,NULL);从注释我也没有看出来 为什么,你能试试这么改改看行不行
3 年多之前 回复
eagleyan
eagleyan 在debug版本不允许直接DockControlBar(&m_myDlg);而必须DockControlBar(&m_myDlg,AFX_IDW_DOCKBAR_TOP,NULL);从注释我也没有看出来 为什么,你能试试这么改改看行不行
3 年多之前 回复
eagleyan
eagleyan 回复XURUIHU: 查了一下源码void CFrameWnd:ockControlBar(CControlBar* pBar, UINT nDockBarID, LPCRECT lpRect) { CDockBar* pDockBar = (nDockBarID == 0) ? NULL : (CDockBar*)GetControlBar(nDockBarID); DockControlBar(pBar, pDockBar, lpRect); } void CFrameWnd:ockControlBar(CControlBar* pBar, CDockBar* pDockBar, LPCRECT lpRect) { ASSERT(pBar != NULL); // make sure CControlBar::EnableDocking has been called ASSERT(pBar->m_pDockContext != NULL);
3 年多之前 回复
eagleyan
eagleyan 回复XURUIHU: 你的frame是CMDIChildWndEx还是CMDIChildWnd
3 年多之前 回复
XURUIHU
XURUIHU IDD_FLOAT_DLG也已经创建了,DEBUG查了一下,应该问题是出在DockControlBar(&m_myDlg)这一句
3 年多之前 回复
caozhy
caozhy   Ds   Rxr 2014.12.01 23:04

m_myDlg有没有正确初始化?

XURUIHU
XURUIHU IDD_FLOAT_DLG也已经创建了,DEBUG查了一下,应该问题是出在DockControlBar(&m_myDlg)这一句
3 年多之前 回复
XURUIHU
XURUIHU 事先已经定义好了,对话框资源也已经添加了,需要初始化吗?我看工具栏、状态栏等对象都没有初始化啊?怎么初始化?
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
创建空白文档失败的原因
创建空白文档失败的原因
VC创建空文档失败问题一例
偶遇VC创建空文档失败,如下图所示,仅供参考 , 问题原因:确认电脑显卡是否是多个,如果是多个,禁用掉一个,重启电脑再次运行!
关于"建立空文档失败"的问题
关于"建立空文档失败"的问题的分析!             这类问题的出现主要在BOOL   CWinApp::ProcessShellCommand(CCommandLineInfo&   rCmdInfo);         函数的关键内容:     BOOL   bResult   =   TRUE;     switch   (rCmdInfo.m_nShellCommand)    
vc 建立空文档失败 问题跟踪 .
问题引入:     新建一个mfc单文档程序后,删除了所有的工具栏条目,程序编译通过,但在执行时后提示:“建立空文档失败”,程序退出 问题分析:     由于工具栏资源被删除,所以在int CMainFrame::OnCreate(LPCREATESTRUCT lpCrea
[转载] MFC下关于“建立空文档失败”问题的分析二 ---ProcessShellCommand()函数分析
本文链接:http://user.qzone.qq.com/278288976/blog/1196240170ProcessShellCommand()在我们用向导创建MFC应用程序时,在App::InitInstance()中总会出现下面这样的代码到底是什么意思呢,我差了很多资料终于使其漏出庐山真面目。 CCommandLineIn
建立空文档失败
这类问题的出现主要在bool CWinApp::ProcessShellCommand(CCommandLineInfo& rCmdInfo); 函数的内容如下(在C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src\mfc\appui2.cpp) BOOL CWinApp::ProcessShellCommand(CCommandL
VS2012创建C++项目失败,解决方法
在win10系统上首次创建项目失败:System.Collections.Generic.RandomizedStringEqualityComparer 不是 GenericType 解决方法:到http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=36020上下载工具包,安装即可。
多文档程序框架中建立新的子框架类后出现“创建空文档失败”的问题
起因:多文档程序为了使用两个文档模板,其用来实时测量;其二用于数据处理显示。两个模板分别对应不同的子框架类:CChildFrame和CDispChildFrame。            已有的CChildFrame是派生自CMDIChildWndEx类,考虑到实际需求CDispChildFrame也应派生自CMDIChildWndEx类。经尝试,CDispChildFrame如果派生于 CM
关于"建立新文档失败"的问题!
关于"建立空文档失败"的问题的分析!   许多新手在遇到此类问题时总是措手无策,如果谁有耐心就看看我写的下面这片文章吧。   这类问题的出现主要在BOOL  CWinApp::ProcessShellCommand(CCommandLineInfo&  rCmdInfo);   函数的关键内容:  BOOL  bResult  =  TRUE;  switch  (rCmdInfo.m_nShel
VS2012发布网站结果发布到的文件为空
用vs2012发布网站