none
Failed to create empty document. RRS feed

  • 问题

  • HI.

    我有一个项目是从VC6.0移植到VS2010,现在运行DEBUG时没有问题,但在RELEASE是就会提示“Failed to create empty document.”。

    我的界面是重绘的,并且单独生成资源DLL,在开始时动态加载,所以不使用MFC的资源。

    经过我的调试发现是OnCreate返回-1造成的,但不知道如何解决啊!

    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
    		return -1;
    	else
    		return 0;
    }
    

    2011年10月27日 8:19

答案

  • 您Debug下F11进入函数看看是哪个调用失败了?


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 王译 2011年10月31日 7:23
    2011年10月27日 15:03
    版主
  • 应该是VC6.0与VS2010的框架有不同,现在我是新建一个MFC工程然后将代码一点一点的移植过去,尤其是不改动自动生成的代码框架,基本可以还有一些小问题。
    • 已标记为答案 王译 2011年10月31日 7:22
    2011年10月31日 7:22

全部回复

  • 您Debug下F11进入函数看看是哪个调用失败了?


    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 王译 2011年10月31日 7:23
    2011年10月27日 15:03
    版主
  • Debug下是成功的啊。。。。

    这才让我胸闷啊。

    2011年10月28日 6:57
  • 现在发现问题了,是动态载入资源的关系。

    // 	GetPrivateProfileString("Init","Language","english",m_sLanguage.GetBuffer(50),50,INIFILE);
    // 	m_sLanguage.ReleaseBuffer();
    // 	m_sLanguage.MakeLower();
    // 	
    // 	if (-1 < m_sLanguage.Find("chinese")) 
    // 	{
    // 		m_hLanguage = AfxLoadLibrary(".\\data\\chinesedll.dll");
    // 		if (m_hLanguage)
    // 		{
    // 			AfxSetResourceHandle(m_hLanguage);
    // 		}
    // 		else//DLL LOSE
    // 		{
    // 			AfxMessageBox("There isn't chinese!");
    // 		}
    // 	}
    // 	else if (-1 < m_sLanguage.Find("english"))
    // 	{
    // 		m_hLanguage = AfxLoadLibrary(".\\data\\englishdll.dll");
    // 		if (m_hLanguage)
    // 		{
    // 			AfxSetResourceHandle(m_hLanguage);
    // 		}
    // 		else//DLL LOSE
    // 		{
    // 			AfxMessageBox("There isn't english!");
    // 		}
    // 	}
    // 	else	//默认加载为英语
    // 	{
    // 		m_hLanguage = AfxLoadLibrary(".\\data\\englishdll.dll");
    // 		if (m_hLanguage)
    // 		{
    // 			AfxSetResourceHandle(m_hLanguage);
    // 		}
    // 		else//DLL LOSE
    // 		{
    // 			AfxMessageBox("There isn't this language!");
    // 		}
    // 	}
    


    以上是动态载入资源DLL,屏蔽就没有问题,但这是我需要的功能啊,因为要中英文双语版本。

    谁能告诉我这是为什么,该怎么解决啊!!!!!

    2011年10月28日 8:01
  • 在输出目录中有这样的提示:
    “OpteeQ.exe”: 已加载“E:\OpteeQ\Release\data\chinesedll.dll”,未使用调试信息生成二进制文件。
    “OpteeQ.exe”: 已加载“E:\OpteeQ\Release\data\ETHERNETDLL.dll”,未使用调试信息生成二进制文件。
    这两个DLL就是资源的,未使用调试信息生成二进制文件??这是什么意思??
    2011年10月28日 8:04
  • up 谁来帮我看看啊!!!
    2011年10月31日 0:11
  • 应该是VC6.0与VS2010的框架有不同,现在我是新建一个MFC工程然后将代码一点一点的移植过去,尤其是不改动自动生成的代码框架,基本可以还有一些小问题。
    • 已标记为答案 王译 2011年10月31日 7:22
    2011年10月31日 7:22