最近,我们将使用 MFC 的 C++ 项目从 VS2008 移到了 VS2010。
还有一个小问题:在我们的MDI界面中,调用函数CWinApp::OpenDocumentFile后,app不仅打开了文件,还新建了一个空的MDI窗口。
如果我们将工具集(项目属性 -> 常规 -> 平台工具集)更改回 v90(VS2008),我们不会遇到这个问题。
也许有人看到了同样的问题并且知道我们做错了什么?
最近,我们将使用 MFC 的 C++ 项目从 VS2008 移到了 VS2010。
还有一个小问题:在我们的MDI界面中,调用函数CWinApp::OpenDocumentFile后,app不仅打开了文件,还新建了一个空的MDI窗口。
如果我们将工具集(项目属性 -> 常规 -> 平台工具集)更改回 v90(VS2008),我们不会遇到这个问题。
也许有人看到了同样的问题并且知道我们做错了什么?
解决了。也许解释会帮助某人:
问题出在 MFC 功能中:
CDocument* CDocManager::OpenDocumentFile(LPCTSTR lpszFileName)
在 VS2008 中它调用了一个函数
return pBestTemplate->OpenDocumentFile(szPath);
在 VS2010 中它调用另一个函数(具有不同数量的参数)
return pBestTemplate->OpenDocumentFile(szPath, bAddToMRU, TRUE);
我们在自己的 CMultiDocTemplate 实现中没有覆盖它
实际上,调用 opendocumentfile 函数的文件 docmgr.cpp 发生了变化。
如果您从 CMultiDocTemplate 派生一个类,请注意此更改。
事实上,你的帖子帮助我在我的申请中发现了一个错误。