精华内容
下载资源
问答
  • vc 建立空文档失败 问题跟踪

    千次阅读 2011-04-08 17:15:00
    <br />问题引入:  新建一个mfc单文档程序后,删除了所有的工具栏条目,程序编译通过,但在执行时后提示:“建立空文档失败”,程序退出 问题分析:  由于工具栏资源被删除,所以在int ...

    问题引入:
        新建一个mfc单文档程序后,删除了所有的工具栏条目,程序编译通过,但在执行时后提示:“建立空文档失败”,程序退出
    问题分析:
        由于工具栏资源被删除,所以在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    里面创建工具栏目时候会失败。 但是这和弹出“建立空文档失败”看不出直接联系。为了查出根本原因,这里进行深入调试。

        跟踪调试,问题出现在 代码 if (!ProcessShellCommand(cmdInfo)),设计一正常程序深入调试,查找原因。

    1、C:/Program Files/Microsoft Visual Studio/VC98/MFC/SRC/APPUI2.CPP文件函数:
       BOOL CWinApp::ProcessShellCommand(CCommandLineInfo& rCmdInfo) 
         中,定位到代码:
        if (!AfxGetApp()->OnCmdMsg(ID_FILE_NEW, 0, NULL, NULL)),该语句处理消息ID_FILE_NEW, 进入步骤2


    2、C:/Program Files/Microsoft Visual Studio/VC98/MFC/SRC/DOCMGR.CPP 的void CDocManager::OnFileNew()
    函数,发现如果m_templateList列表为空,会导致该问题,如下:
    if (m_templateList.IsEmpty())
    {
       TRACE0("Error: no document templates registered with CWinApp./n");
       AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);
       return;
    }
    继续跟踪至
    3、C:/Program Files/Microsoft Visual Studio/VC98/MFC/SRC/DOCSINGL.CPP
    的函数:CDocument* CSingleDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName, BOOL bMakeVisible)
    该函数里如果CreateNewDocument失败,也会导致该问题,如下:
       pDocument = CreateNewDocument();
       ASSERT(pFrame == NULL);     // will be created below
       bCreated = TRUE;
    }

    if (pDocument == NULL)
    {
       AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);
       return NULL;
    }
    跟踪分析,删除工具栏目对CreateNewDocument应该没影响。

    另外该函数里如果CreateNewFrame失败,也会导致该问题,如下:

       pFrame = CreateNewFrame(pDocument, NULL);
       pDocument->m_bAutoDelete = bAutoDelete;
       if (pFrame == NULL)
       {
        AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);
        delete pDocument;       // explicit delete on error
        return NULL;
       }

    我们深入跟踪语句: pFrame = CreateNewFrame(pDocument, NULL);进入代码文件
    C:/Program Files/Microsoft Visual Studio/VC98/MFC/SRC/DOCTEMPL.CPP 的函数
    CFrameWnd* CDocTemplate::CreateNewFrame(CDocument* pDoc, CFrameWnd* pOther),在这里,跟踪语句
    if (!pFrame->LoadFrame(m_nIDResource,
        WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,   // default frame styles
        NULL, &context))

    使我们进入到C:/Program Files/Microsoft Visual Studio/VC98/MFC/SRC/WINFRM.CPP文件的
    BOOL CFrameWnd::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle,
    CWnd* pParentWnd, CCreateContext* pContext) 函数,至此,我们发现该函数的语句
    if (!Create(lpszClass, lpszTitle, dwDefaultStyle, rectDefault,
       pParentWnd, MAKEINTRESOURCE(nIDResource), 0L, pContext))
    {
       return FALSE;   // will self destruct on failure normally
    }
    调用了CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct),这里工具栏创建的失败,导致问题的出现

    展开全文
  • vc 建立空文档失败 问题跟踪 .

    千次阅读 2011-08-31 17:31:32
     新建一个mfc单文档程序后,删除了所有的工具栏条目,程序编译通过,但在执行时后提示:“建立空文档失败”,程序退出 问题分析:  由于工具栏资源被删除,所以在int CMainFrame::OnCreate(LPCREATESTRUCT ...
      
    

    问题引入:
        新建一个mfc单文档程序后,删除了所有的工具栏条目,程序编译通过,但在执行时后提示:“建立空文档失败”,程序退出
    问题分析:
        由于工具栏资源被删除,所以在int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    里面创建工具栏目时候会失败。 但是这和弹出“建立空文档失败”看不出直接联系。为了查出根本原因,这里进行深入调试。

        跟踪调试,问题出现在 代码 if (!ProcessShellCommand(cmdInfo)),设计一正常程序深入调试,查找原因。

    1、C:/Program Files/Microsoft Visual Studio/VC98/MFC/SRC/APPUI2.CPP文件函数:
       BOOL CWinApp::ProcessShellCommand(CCommandLineInfo& rCmdInfo) 
         中,定位到代码:
        if (!AfxGetApp()->OnCmdMsg(ID_FILE_NEW, 0, NULL, NULL)),该语句处理消息ID_FILE_NEW, 进入步骤2


    2、C:/Program Files/Microsoft Visual Studio/VC98/MFC/SRC/DOCMGR.CPP 的void CDocManager::OnFileNew()
    函数,发现如果m_templateList列表为空,会导致该问题,如下:
    if (m_templateList.IsEmpty())
    {
       TRACE0("Error: no document templates registered with CWinApp./n");
       AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);
       return;
    }
    继续跟踪至
    3、C:/Program Files/Microsoft Visual Studio/VC98/MFC/SRC/DOCSINGL.CPP
    的函数:CDocument* CSingleDocTemplate::OpenDocumentFile(LPCTSTR lpszPathName, BOOL bMakeVisible)
    该函数里如果CreateNewDocument失败,也会导致该问题,如下:
       pDocument = CreateNewDocument();
       ASSERT(pFrame == NULL);     // will be created below
       bCreated = TRUE;
    }

    if (pDocument == NULL)
    {
       AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);
       return NULL;
    }
    跟踪分析,删除工具栏目对CreateNewDocument应该没影响。

    另外该函数里如果CreateNewFrame失败,也会导致该问题,如下:

       pFrame = CreateNewFrame(pDocument, NULL);
       pDocument->m_bAutoDelete = bAutoDelete;
       if (pFrame == NULL)
       {
        AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC);
        delete pDocument;       // explicit delete on error
        return NULL;
       }

    我们深入跟踪语句: pFrame = CreateNewFrame(pDocument, NULL);进入代码文件
    C:/Program Files/Microsoft Visual Studio/VC98/MFC/SRC/DOCTEMPL.CPP 的函数
    CFrameWnd* CDocTemplate::CreateNewFrame(CDocument* pDoc, CFrameWnd* pOther),在这里,跟踪语句
    if (!pFrame->LoadFrame(m_nIDResource,
        WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE,   // default frame styles
        NULL, &context))

    使我们进入到C:/Program Files/Microsoft Visual Studio/VC98/MFC/SRC/WINFRM.CPP文件的
    BOOL CFrameWnd::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle,
    CWnd* pParentWnd, CCreateContext* pContext) 函数,至此,我们发现该函数的语句
    if (!Create(lpszClass, lpszTitle, dwDefaultStyle, rectDefault,
       pParentWnd, MAKEINTRESOURCE(nIDResource), 0L, pContext))
    {
       return FALSE;   // will self destruct on failure normally
    }
    调用了CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct),这里工具栏创建的失败,导致问题的出现

    展开全文
  • VC创建空文档失败问题一例

    千次阅读 2015-01-05 17:45:42
    偶遇VC创建空文档失败,如下图所示,仅供参考 , 问题原因:确认电脑显卡是否是多个,如果是多个,禁用掉一个,重启电脑再次运行!

    偶遇VC创建空文档失败,如下图所示,仅供参考


    问题原因:确认电脑显卡是否是多个,如果是多个,禁用掉一个,重启电脑再次运行!

    展开全文
  • 同事把一个VC++2003开发...ProcessShellCommand(cmdInfo)) 运行后弹出“创建空文档失败”对话框。困扰了他一段时间(两天),我拿来调了一会,只感觉应该是CMainFrame创建失败导致,不过没找出真正原因。后来还是他发现了

    同事把一个VC++2003开发的多文档工程转化为单文档工程,按照网上所说,做了修改。但是在

    BOOL CSDITestApp::InitInstance()中的语句

    if (!ProcessShellCommand(cmdInfo)) 运行后弹出“创建空文档失败”对话框。困扰了他一段时间(两天),我拿来调了一会,只感觉应该是CMainFrame创建失败导致,不过没找出真正原因。后来还是他发现了原因并修改成功。原因:把多文档工程改为单文档后,CMainFrame对象的创建方式发生了改变。多文档中是显示生成,单文档中是系统生成。

    单文档如下:

    	CCommandLineInfo cmdInfo;
    	ParseCommandLine(cmdInfo);
    	// 调度在命令行中指定的命令。如果
    	// 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
    	if (!ProcessShellCommand(cmdInfo))
    		return FALSE;
    	// 唯一的一个窗口已初始化,因此显示它并对其进行更新
    	m_pMainWnd->ShowWindow(SW_SHOW);
    	m_pMainWnd->UpdateWindow();

    
    多文档如下:
    

     

    AddDocTemplate(pDocTemplate);// 创建主 MDI 框架窗口CMainFrame* pMainFrame = new CMainFrame;if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME))return FALSE;m_pMainWnd = pMainFrame;// 仅当具有后缀时才调用 DragAcceptFiles//  在 MDI 应用程序中,这应在设置 m_pMainWnd 之后立即发生// 分析标准外壳命令、DDE、打开文件操作的命令行//	CCommandLineInfo cmdInfo;ParseCommandLine(cmdInfo);// 调度在命令行中指定的命令。如果// 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。//cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;if (!ProcessShellCommand(cmdInfo))return FALSE;// 主窗口已初始化,因此显示它并对其进行更新m_pMainWnd->ShowWindow(m_nCmdShow);m_pMainWnd->UpdateWindow();


     解决方案:

    把多文档CMainFrame类中的 IMPLEMENT_DYNAMIC 改为IMPLEMENT_DYNCREATE 即可,后者是动态生成,系统可以生成。

     

    
    
    
    
    展开全文
  • 从别人那里拷来MapX+MFC的程序琢磨,在别人机子上能正确运行,到了自己机器编译通过,点击运行总是提示“建立空文档失败。”,跟踪调试发现,在下面的函数中出现问题:int CMainFrame::OnCreate(LPCREATESTRUCT ...
  • 建立空文档失败

    千次阅读 2011-11-23 13:03:16
    这类问题的出现主要在bool CWinApp::ProcessShellCommand...函数的内容如下(在C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src\mfc\appui2.cpp) BOOL CWinApp::ProcessShellCommand(CCommandL
  • 这个是孙鑫老师的程序: BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: 在此处通过... // CREATESTRUCT cs 来修改窗口类或样式 ...
  • CMapX的SetGeoSet 建立空文档失败 问题

    千次阅读 2006-08-29 11:41:00
    出现建立空文档失败错误,搜索网络中相关文档,大抵都是在m_ctrlMapX.Create后使用,却未曾见出现类似错误,百思不得其解,不得已,将该句放到了View::OnCreate的最后: // toggle scalebar on OnV
  • 关于"建立空文档失败"的问题

    千次阅读 2008-01-18 17:10:00
    关于"建立空文档失败"的问题的分析! 这类问题的出现主要在BOOL CWinApp::ProcessShellCommand(CCommandLineInfo& rCmdInfo); 函数的关键内容: BOOL bResult = TRUE; switch (rCmdInfo.m_nShellCommand)
  • 在进行多文档编辑时,采用VC的类向导添加了 框架类,文档类,视图类,但是添加之后 新建文档时提示“创建新文档失败”,跟踪代码发现 错误出在: m_pfnCreateObject指针为,造成创建失败,对比发现错误出在,...
  • 在开发Modbus转发器时应用到MSCOMM32.OCX控件,但在未安装VC开发环境的机器上,总会弹出"建立空文档失败"的情况,所幸的是软件的使用人员是自己公司的,但久而久之,他们感觉非常不便,于是我在网上找了好多好多关于”建立...
  • 工程名称和类名改了一下,编译均没有问题,就是运行时提示“建立空文档失败”,然后程序就退出了,还有,生成的可执行文件的图标变成了Win32默认的图标了。 通过跟踪发现是CFrameWnd::Create()中的 HINSTANCE ...
  • 建立空文档失败 "的 问题 的 分析 ! 许多新手在遇到此类 问题 时总是措手无策,如果谁有耐心就看看我写的下面这片文章吧。 这类 问题 的出现主要在BOOL CWinApp::ProcessShellCommand(CCommandLineInfo& rCmdInfo);...
  • 原文地址: ... ...这类问题的出现主要在...我碰到一个例子是在资源管理删除了工具栏后,编译通过,但是运行是报错“建立空文档失败”。其实就是当中的第三个因素。后面我把创建工具栏的代码去 掉后,运行成功。
  • 问题1: CView::OnCreate(lpCreateStruct) == -1CMyView::OnCreate(lpCreateStruct) == -1) 例子: class CMyView : public CView { protected: // 仅从序列化创建 CMyView(); DECLARE_DYNCREATE(CMyView) ...
  • VC 文档+视图 详细分析

    万次阅读 2015-01-28 18:06:40
    深入浅出MFC文档视图架构之基本概念深入浅出MFC文档视图架构之文档模板深入浅出MFC文档视图架构之文档深入浅出MFC文档视图架构之视图深入浅出MFC文档视图架构之框架深入浅出MFC文档视图架构之相互关系深入浅出MFC...
  • 鉴于很多CSDN的朋友遇到类似的问题,我把这篇文章从...今天在新系统上刚装好了VC6,测试一下,建了一个MFC单文档程序,最后的视图基类选择了CRichEditView,向导完成后,编译成功,运行却失败,提示Debug Assertion F
  • 最近想在VC中单文档框架中删除菜单,状态栏,工具栏 。状态栏,工具栏在CMainFrame::OnCreate中就可以注释调,但是怎么样将菜单删掉呢?百度了一下,不太好找到。只好依靠现有知识,自己找到办法了。通过跟踪调试...
  • VC6.0之MFC 单文档操作

    千次阅读 2014-06-24 10:22:16
    最近在学习怎么操作MFC的单文档操作,
  • VC文档切分动态更换

    千次阅读 2004-11-26 11:33:00
    VC文档切分动态更换多视图代码分析 汤米 @ 2004-09-21 14:39  最近iMaker2000的界面设计所用的是Doc/View结构,涉及到Single Document的多视图带切分的切换。呵呵,光是述说都有点拗口了。VC做界面的确是麻烦啊,...
  • 这次写这篇文档的主要目的是结局win7下使用VC6.0注册数据库控件失败的问题。   (本例针对对话框程序) 我们在VC6.0中庸MFC进行数据库应用程序的设计编程时会用到一些常用的数据库访问控件:比如ADO Data控件,...
  • win7下VC6.0 注册...这次写这篇文档的主要目的是结局win7下使用VC6.0注册数据库控件失败的问题。 (本例针对对话框程序) 我们在VC6.0中庸MFC进行数据库应用程序的设计编程时会用到一些常用的数据库访问控件:
  • 各位大神,我用mfc创建了一个基于单文档的应用程序,现在我想把默认的菜单全部删除,然后加入自己的菜单,可是当删除后会报“建立空文档失败”,如何解决这个问题,谢谢!
  • VC中调用EXECL模板生成新的Excel文档

    千次阅读 2013-09-27 11:43:11
     //利用模板文件建立文档  char path[MAX_PATH];  GetCurrentDirectory(MAX_PATH,path); //获取当前应用程序或进程的运行目录并将其存入path中  CString strPath = path;  strPath += "\\1....
  • VC10

    千次阅读 2009-07-28 16:33:00
    如何在VC5中控制工具条的停靠位置 - [VC专栏]作者:宋立波 在VC5 中开发大型应用程序时,工具条通常是程序中必不可少的重要功能因素, 其中工具条在整个窗口中的停靠位置尤其关键,它直接影响到程序界面的外观形 象...
  • VC多媒体编程

    千次阅读 2012-04-12 00:09:53
    -- VC多媒体编程 -- Visual C++中基于多文档视窗模型的重叠图象拼接技术 摘要   图象拼接是在全景视频系统、地理信息系统等应用中经常遇到的一个问题,本文基于网格匹配的方法对边界部分有重叠的...
  • VC 笔记

    千次阅读 2010-08-04 22:01:00
    产生窗口的过程是由操作系统完成的,如果再调用CreateWindow函数之前,没有用RegisterClass函数注册过窗口类,操作系统将无法得知这一类型窗口的相关信息,从而导致创建窗口失败 参数lpWindowName指定窗口的名字。...
  • VC操作Excel

    千次阅读 2015-08-03 22:43:24
    使用VC写EXCEL主要是通过COM方式。导入EXCEL类的方式如下: 1>创建一个MFC工程 直接根据需求创建一个MFC工程即可。  2>导入EXCEL类 在工程上点击右键选择添加类,在模板上选择TypeLib中的MFC类

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,748
精华内容 3,899
关键字:

vc建立空文档失败