使用WinHTTP下载HTTP文件的进度指示

Ste*_*ton 1 c++ winhttp winhttprequest

我想在使用WinHTTP下载文件时在我的C++ Windows应用程序中实现进度条.知道怎么做吗?看起来好像WinHttpSetStatusCallback是我想要使用的,但是我没有看到要查找的通知...或者如何获得"下载百分比"...

救命!

谢谢!

Ale*_*lli 5

根据文档:

WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE

可以使用WinHttpReadData检索数据.lpvStatusInformation参数指向包含可用数据字节数的DWORD.dwStatusInformationLength参数本身是4(DWORD的大小).

WINHTTP_CALLBACK_STATUS_READ_COMPLETE

已成功从服务器读取数据.lpvStatusInformation参数包含指向WinHttpReadData调用中指定的缓冲区的指针.dwStatusInformationLength参数包含读取的字节数.

可能还有其他相关通知,但这两个似乎是关键通知.获得"百分比"并不一定是微不足道的,因为您可能不知道您获得了多少数据(并非所有下载都设置了内容长度......); 你可以得到标题:

WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE

响应标头已收到,可用于WinHttpQueryHeaders.lpvStatusInformation参数为NULL.

如果Content-Length IS可用,则可以通过跟踪每个"可用数据"通知的总字节数来计算百分比,否则您的猜测与我的一样好;-).