小弟使用CopyFileEx函数复制大文件的时候,希望中途可以停下来,然后可以继续或者取消。根据MSDNCopyFileEx函数的回调函数的返回值有以下几种:
  PROGRESS_CONTINUE = 0;                        // 让拷贝过程继续
  PROGRESS_CANCEL = 1;                          // 终止拷贝过程并删除目标文件
  PROGRESS_STOP = 2;                            // 停止拷贝,但以后可以继续开始
  PROGRESS_QUIET = 3;                           // 让拷贝过程继续,但从此不再进行回调我用PROGRESS_STOP和PROGRESS_QUIET都不能满足要求以为一旦用了这两个返回值 这个复制过程不但没有停住 而且  再也不进该回调函数了更恐怖的是我的程序都退出了  但是  复制文件的过程仍然继续直到复制完毕   现在想问问有没有高手帮忙告诉个可以暂停复制过程,并且可以继续的方法,谢谢了。

解决方案 »

  1.   

    PROGRESS_STOP再PROGRESS_CONTINUE,不要PROGRESS_QUIET
      

  2.   


    返回值只能有一个啊  返回了  PROGRESS_STOP  就再也不进  回调函数了  还怎么返回PROGRESS_CONTINUE呢?
      

  3.   

    如果你要实现重新开始必须在CopyFileEx中的dwCopyFlags设为COPY_FILE_RESTARTABLE这样当你需要继续复制时,只需再次调用CopyFileEx即可Progress of the copy is tracked in the target file in case the copy fails. The failed copy can be restarted at a later time by specifying the same values for lpExistingFileName and lpNewFileName as those used in the call that failed.
      

  4.   

    取消BOOL   cancel=FALSE;  
    CopyFileEx(path,path,&MyCopyProgressRoutine,this,&cancel,COPY_FILE_RESTARTABLE); 
    再开始
      

  5.   


    取消是什么意思?
    将cancel=TRUE;?