Frage

Ich möchte eine Fortschrittsleiste in meiner C ++ - Windows -Anwendung implementieren, wenn ich eine Datei mit WinHTTP herunterladen kann. Irgendeine Idee, wie man das macht? Es sieht so aus, als ob der WinHttpsetStatuscallback das ist, was ich verwenden möchte, aber ich sehe nicht, nach welcher Benachrichtigung ich suchen muss ... oder wie man den "prozentualen heruntergeladen" bekommt ...

Hilfe!

Vielen Dank!

War es hilfreich?

Lösung

Pro Die Dokumente:

WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE

Daten können mit winHttpreaddata abgerufen werden. Der Parameter lpvstatusinformation zeigt auf ein DWORD, das die Anzahl der verfügbaren Datenbytes enthält. Der Parameter dwstatusinformationLength selbst beträgt 4 (die Größe eines DWORD).

und

WINHTTP_CALLBACK_STATUS_READ_COMPLETE

Daten wurden erfolgreich vom Server gelesen. Der Parameter lpvStatusinformation enthält einen Zeiger auf den im Aufruf an Winhttpreaddata angegebenen Puffer. Der Parameter dwstatusinformationLength enthält die Anzahl der gelesenen Bytes.

Es mag andere relevante Benachrichtigungen geben, aber diese beiden scheinen die wichtigsten zu sein. Das Erhalten von "Prozent" ist nicht unbedingt trivial, da Sie möglicherweise nicht wissen, wie viel Daten Sie erhalten (nicht alle Downloads haben die Inhaltslänge-Set ...); Sie können die Header mit:

WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE

Der Antwortheader wurde empfangen und ist mit WinHttpQueryHeaders erhältlich. Der Parameter lpvstatusinformation ist null.

Und wenn die Inhaltslänge verfügbar ist, kann der Prozentsatz berechnet werden, indem die Gesamtzahl der Bytes an jeder "verfügbaren" Daten zur Verfügung steht, andernfalls ist Ihre Vermutung so gut wie meine ;-).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top