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();