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

时间:2017-10-26 09:54:26

标签: 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 !
  return OnSaveDocument(str);           

}

ErrorBox显示:“遇到了一个不正确的参数”。

1 个答案:

答案 0 :(得分:1)

我进一步调查,错误来自

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

}

hr错误代码为2,表示ERROR_FILE_NOT_FOUND:系统找不到指定的文件。

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