我的MFC应用程序有一个非常奇怪的问题。详细说明:
这个程序。大约15岁,见过大多数VS版本。
我有一个单独的测试电脑:Windows XP Pro SP3,Vista Home Premium,7 Ultimate。
当然我在所有Windows上都安装了VC ++可再发行组件。
现在我将尝试描述问题:
该程序使用MFC类来处理CArchive对象。用户可以创建包含一个或多个工作表的新项目,这些工作表包含可能包含文本,图片或两者的单元格。例如一张8x8网格的工作表。该项目可以保存到磁盘:MySheet.K01,MySheet.K02等。使用CMultiDocTemplate查看工作表。
我创建了一个这个项目的分支,用于创建一个可以将这些文件转换为另一种格式的程序。我使用AllocConsole()将其设为控制台应用程序。
当我测试程序时,结果是它在Windows 7上运行正常,部分在Windows Vista下运行,在Windows XP上只有崩溃。
如果程序是在Windows XP下编译的话,我已经排除了重要的可能性。
以下是我认为出了什么问题:
CFile myFile;
CMyDoc *pDoc = (CMyDoc *)m_pDocViewTemplate->CreateNewDocument(); // Get a CDocument and cast it
CFileException myError;
TCHAR *arcFileName = new TCHAR[MAX_PATH];
BOOL bTmp = myFile.Open(arcFileName, CFile::modeRead, &myError);
char lpszError[1024];
myError.GetErrorMessage(lpszError, 1024, 0);
_cprintf(lpszError);
_cprintf("\n");
if(!bTmp)
{
_cprintf("ERROR: Unable to open the file!\n");
return;
}
myFile.SeekToBegin();
CArchive myArc(&myFile, CArchive::load, 8192, 0);
myArc.m_bForceFlat = TRUE;
myArc.m_pDocument = pDoc;
pDoc->Serialize(myArc);
我真的很茫然。如果需要,我可以提供更多细节。
提前致谢。
答案 0 :(得分:0)
arcFileName将包含类似:“C:\ MyProject \ MySheet.K01”
...显然
答案 1 :(得分:0)
从XP上的IDE运行时崩溃了吗?你得到什么崩溃?它在Debug和Release版本中崩溃了吗?