我想在使用WinHTTP下载文件时在我的C ++ Windows应用程序中实现进度条。知道怎么做吗?看起来好像WinHttpSetStatusCallback是我想要使用的,但是我没有看到要查找的通知......或者如何获得“下载百分比”......
帮助!
谢谢!
答案 0 :(得分:5)
每the docs:
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可用,则可以通过跟踪每个“可用数据”通知的总字节数来计算百分比,否则您的猜测与我的一样好; - )。