Domanda

Voglio implementare una barra di avanzamento nella mia applicazione Windows C ++ durante il download di un file usando WinHTTP. Qualche idea su come farlo? Sembra che WinHttpSetStatusCallback sia quello che voglio usare, ma non vedo quale notifica cercare ... o come ottenere la "percentuale scaricata" ...

Aiuto!

Grazie!

È stato utile?

Soluzione

Per i documenti :

WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE

  

I dati sono disponibili per essere recuperati   WinHttpReadData. Il   Punti parametro lpvStatusInformation   a un DWORD che contiene il numero di   byte di dati disponibili. Il   Parametro dwStatusInformationLength   stesso è 4 (la dimensione di un DWORD).

e

WINHTTP_CALLBACK_STATUS_READ_COMPLETE

  

I dati sono stati letti correttamente da   server. LpvStatusInformation   Il parametro contiene un puntatore a   buffer specificato nella chiamata a   WinHttpReadData. Il   Parametro dwStatusInformationLength   contiene il numero di byte letti.

Potrebbero esserci altre notifiche pertinenti, ma queste due sembrano essere quelle chiave. Ottenere "percentuale" non è necessariamente banale perché potresti non sapere quanti dati stai ricevendo (non tutti i download hanno una lunghezza dei contenuti impostata ...); puoi ottenere le intestazioni con:

WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE

  

L'intestazione della risposta è stata ricevuta   ed è disponibile con   WinHttpQueryHeaders. Il   Il parametro lpvStatusInformation è   NULL.

e se Content-Length È disponibile, la percentuale può essere calcolata tenendo traccia del numero totale di byte in ciascun "dato disponibile". notifica, altrimenti la tua ipotesi è buona come la mia ;-).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top