怎样使用CProgressCtrl显示文件拷贝的进度?

counteagler 2005-07-06 03:09:38
CopyFile从硬盘向U盘拷文件,想用CProgressCtrl显示拷贝的进度,请达人赐教,最好有代码。
...全文
612 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
elyta 2005-07-07
  • 打赏
  • 举报
回复
我好像已经在另一版回复过你的这个问题了哦!

用以下两个函数:
BOOL CopyFileEx(LPCTSTR lpExistingFileName, // name of existing file
LPCTSTR lpNewFileName, // name of new file
LPPROGRESS_ROUTINE lpProgressRoutine, // callback function
LPVOID lpData, // callback parameter
LPBOOL pbCancel, // cancel status
DWORD dwCopyFlags // copy options
);

DWORD CALLBACK CopyProgressRoutine(
LARGE_INTEGER TotalFileSize, // file size
LARGE_INTEGER TotalBytesTransferred, // bytes transferred
LARGE_INTEGER StreamSize, // bytes in stream
LARGE_INTEGER StreamBytesTransferred, // bytes transferred for stream
DWORD dwStreamNumber, // current stream
DWORD dwCallbackReason, // callback reason
HANDLE hSourceFile, // handle to source file
HANDLE hDestinationFile, // handle to destination file
LPVOID lpData // from CopyFileEx
);

比如
DWORD CALLBACK MyCopyProgressRoutine(LARGE_INTEGER TotalFileSize, // file size
LARGE_INTEGER TotalBytesTransferred, // bytes transferred
LARGE_INTEGER StreamSize, // bytes in stream
LARGE_INTEGER StreamBytesTransferred, // bytes transferred for stream
DWORD dwStreamNumber, // current stream
DWORD dwCallbackReason, // callback reason
HANDLE hSourceFile, // handle to source file
HANDLE hDestinationFile, // handle to destination file
LPVOID lpData // from CopyFileEx
)
{
CDialogTest* ptr = (CDialogTest*)lpData;
// do something with pointer, e.g. ptr->m_Progressbar.Pos blahblah

DWORD percent = TotalBytesTransferred*100/TotalFileSize;
return TRUE;
}

BOOL CDialogTest::Copy(CString from, CString to)
{
BOOL cancel;
return CopyFileEx( from, to, (LPPROGRESS_ROUTINE)MyCopyProgressRoutine, (this)this, &cancel, FALSE);
}

idAnts 2005-07-06
  • 打赏
  • 举报
回复
CProgressCtrl m_progress;
先得到文件总数n,然后m_progress.SetRange(0,n);
m_progress.SetStep(1);
m_progress.SetPos(0);

然后创建线程复制文件,每复制一个,给主窗口发个自定义消息WM_COPYED,收到消息后:
m_progress.StepIt();

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧