带有自定义进度条/ c ++构建器的SHFileOperation副本

时间:2013-06-18 10:50:22

标签: winapi progress-bar c++builder shfileoperation

我使用C ++ Builder和SHFileOperation从网络位置下载应用程序(其文件夹)。 WinApi有自己的进度条,但我需要一个带进度条的自定义表单。

我如何单独跟踪复制进度,以便拥有自己的进度条? 一个简短的例子将定义帮助。感谢。

1 个答案:

答案 0 :(得分:4)

SHFileOperation没有为您提供接收进度回调的方法。您可以接受系统提供的进度反馈对话框,也可以不进行任何进度报告。

CopyFileEx支持进度回调。但这仅适用于复制单个文件而不是整个目录。

在Vista及更高版本中,有IFileOperation替代SHFileOperation。此接口比SHFileOperation更强大。您可以使用IFileOperation复制整个目录,并接收进度通知。

如果您需要支持XP或更早版本,则需要编写自己的目录复制例程。您必须计算要复制的文件的总大小,然后使用CopyFileEx执行每个单独的文件副本。您将从CopyFileEx收到进度回调,然后将其转换为要显示的应用程序的整体进度事件。