CFile file,srcfile; CString snewPath; srcfile.Open(sPathname,CFile::modeRead,NULL); //假如 sPathname="c:/test.doc" int srcLen=srcfile.GetLength(); CString s1=sFilename.Right(sFilename.GetLength()-sFilename.Find(".",0)); snewPath=sPathname.Left((sPathname.GetLength()-sFilename.GetLength()))+"copy1"+sFilename.Right(sFilename.GetLength()-sFilename.Find(".",0)); file.Open(snewPath,CFile::modeCreate|CFile::modeWrite,NULL); int Block=srcLen/100; int ProgressSize=0; buf=new char[Block]; m_Progress.SetRange32(0,srcLen); //m_Progress为进度条成员变量 m_Progress.SetPos(0); for(;;) ...{ srcfile.Read(buf,Block); //一次读Block大小字节 file.Write(buf,Block); ProgressSize+=Block; m_Progress.SetPos(ProgressSize); if((srcLen-ProgressSize)<Block) //最后全部读出 ...{ delete[] buf; buf=new char[srcLen-ProgressSize]; srcfile.Read(buf,(srcLen-ProgressSize)); file.Write(buf,(srcLen-ProgressSize)); ProgressSize+=Block; m_Progress.SetPos(ProgressSize); break; } } srcfile.Close(); file.Close();