SHFileOperation()의 pFrom, pTo를 전달시 CString을 casting하여 전달 or String.GetBuffer()를 통한 전달시 “파일을 찾을 수 없다”라는 Error발생 되는 경우가 발생 됩니다. wchar_t의 wsprintf()를 통한 buffer를 직접 전달하고 전달시 pFrom, pTo마지막에 ‘\0\0’ Double NULL 추가 해줍니다.

wchar_t szToFileName[MAX_PATH ];
wchar_t szFromFileName[MAX_PATH ];
memset(szToFileName , 0 , sizeof (szToFileName));
memset(szFromFileName , 0 , sizeof (szToFileName));

wsprintf (szToFileName, _T("%s" ), dlg. GetPathName());
wsprintf (szFromFileName, _T("%s" ), NDTDataManager:: getInstance().GetSaveDataFileName ());

//복사       
SHFILEOPSTRUCT sh ;
memset(&sh , 0 , sizeof (SHFILEOPSTRUCT));
sh.hwnd = pMainFrm-> GetSafeHwnd();
sh.wFunc = FO_MOVE;
sh.pFrom = szFromFileName;
sh.pTo = szToFileName;
sh.fFlags = 0 ;
if(SHFileOperation (&sh) == 0)
{
      //Move성공시 USS File 삭제
      memset (szToFileName, 0, sizeof( szToFileName));
      wsprintf (szToFileName, _T("%s" ), NDTDataManager:: getInstance().GetSaveUSSFileName ());
      DeleteFile (szToFileName);
}