Mfc CDocument::SetPathName(..)在VS2015中崩溃

Mfc CDocument::SetPathName(..)在VS2015中崩溃,mfc,Mfc,我将应用程序从VS2008升级到VS2015 我得到一个异常,我假设它是从 /*virtual*/ BOOL CMyAppDoc::SaveModified() { if (!IsModified()) return TRUE; // nothing to do CString str = GetPathName(); SetPathName(str, TRUE); // assign a PathName and add to MRU ! retur

我将应用程序从VS2008升级到VS2015

我得到一个异常,我假设它是从

/*virtual*/ BOOL CMyAppDoc::SaveModified()
{
  if (!IsModified())
    return TRUE;        // nothing to do

  CString str = GetPathName();
  SetPathName(str, TRUE);   // assign a PathName and add to MRU !
  return OnSaveDocument(str);           

}

错误框显示:“遇到了不正确的参数”。

我进一步调查,错误来自

void CRecentFileList::Add(LPCTSTR lpszPathName, LPCTSTR lpszAppID)
{
  ..
  hr = _AfxSHCreateItemFromParsingName(lpWPath, NULL, IID_IShellItem,LPVOID*)&psi);
  ENSURE(SUCCEEDED(hr));
  ..

}
hr Errorcode为2,表示错误\u文件\u未找到:系统无法找到指定的文件


解决方法是首先使用OnSaveDocument(..)保存文件,然后调用SetPathName(..)

逐步完成调试器,并告诉我们是什么函数导致异常。。。