【问题标题】:CWinApp::OpenDocumentFile creates a new windowCWinApp::OpenDocumentFile 创建一个新窗口
【发布时间】:2013-01-16 16:44:49
【问题描述】:

最近我们将使用 MFC 的 C++ 项目从 VS2008 移到了 VS2010。

还有一个小问题:在我们的MDI界面中,当我们调用了一个函数CWinApp::OpenDocumentFile后,app不仅打开了文件,还新建了一个空的MDI窗口。

如果我们将工具集(项目属性 -> 常规 -> 平台工具集)改回 v90 (VS2008),我们不会遇到这个问题。

也许有人看到了同样的问题并且知道我们做错了什么?

【问题讨论】:

    标签: c++ visual-studio-2010 visual-studio-2008 mfc mdi


    【解决方案1】:

    解决了。也许解释会对某人有所帮助:

    问题出在 MFC 函数中:

    CDocument* CDocManager::OpenDocumentFile(LPCTSTR lpszFileName)
    

    在 VS2008 中它调用了一个函数

    return pBestTemplate->OpenDocumentFile(szPath);
    

    在 VS2010 中它调用另一个函数(具有不同数量的参数)

    return pBestTemplate->OpenDocumentFile(szPath, bAddToMRU, TRUE);
    

    我们在自己的 CMultiDocTemplate 实现中没有覆盖它

    【讨论】:

    【解决方案2】:

    实际上,调用 opendocumentfile 函数的文件 docmgr.cpp 发生了变化。

    如果您从 CMultiDocTemplate 派生一个类,请注意此更改。

    事实上,您的帖子帮助我找到了我的应用程序中的错误。

    【讨论】:

      猜你喜欢
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多