各位高手,我的一段程序如下:
void CXXPage::GenXXHTML(LPCTSTR lpTimeString,CString strPath)
{
   CString strFileName("报告");
   strFileName=strFileName+lpTimeString+".htm";//lpTimeString为当前时间   TRY
   {
      /*产生保存文件的对话框*/
      CFileDialog dlg(FALSE,"htm",strFileName,OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY,"网页文件(*.htm)(*.html)|*.htm;*.html||",this);
      dlg.m_ofn.lpstrTitle=_T("保存报告");

      if(dlg.DoModal()==IDOK)
      {
 CString userFileName=dlg.GetPathName(); //userFileName为用户保存的包含路径的新文件
         CString templateFileName=strPath+"\\报告.htm"; //templateFileName为包含路径的模板文件  HANDLE handle;
 handle=CreateFile(userFileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
 if(INVALID_HANDLE_VALUE!=handle)
 {
    BOOL bCopy=CopyFile(templateFileName,userFileName,FALSE);//从模板文件“报告.htm”中复制文件内容
 }

 CloseHandle(handle);
      }
   }   CATCH( CFileException, e )
   {
#ifdef _DEBUG
afxDump << "File could not be opened "<< e->m_cause << "\n";
#endif
   }
   END_CATCH
}   上面程序是将已存在的一个模板文件“报告.htm”中的内容复制到用户新建的htm文件中。但程序执行后,文件内容并没有被复制,我设断点跟踪后bCopy也确实为0,但这两个文件都已存在,且路径都对,不知道为什么没有复制成功,请高手帮我分析一下,多谢了!

解决方案 »

  1.   

    GetPathName will return "C:\FILES\TEXT.DAT" for the file C:\FILES\TEXT.DAT.
      

  2.   

    你要CopyFile就不要CreateFile了,CreateFile创建并打开了文件,CopyFile的时候文件已存在,并且无法删除替换(因为文件已打开)。
      

  3.   

    HANDLE handle; 
    handle=CreateFile(userFileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 
    if(INVALID_HANDLE_VALUE!=handle) 

        BOOL bCopy=CopyFile(templateFileName,userFileName,FALSE);//从模板文件“报告.htm”中复制文件内容 
    } CloseHandle(handle); 
      

  4.   

    CopyFile不可与CreatFile一起使用