Hallo,
Zoals gebleken uit eerdere threads probeer ik een bestand van een server op te halen. Nu mag de functie URLDownloadToFile niet blocken als ik dat doe.
Ik kom er maar niet uit, heb gezocht op het internet maar ik snap niet waarom OnProgress maar niet wordt aangereoepen. De code hieronder is enkel een test, ik wil het later toepassen in een Win32 applicatie.
Waarom wordt OnProgress niet aangeroepen?
Zoals gebleken uit eerdere threads probeer ik een bestand van een server op te halen. Nu mag de functie URLDownloadToFile niet blocken als ik dat doe.
Ik kom er maar niet uit, heb gezocht op het internet maar ik snap niet waarom OnProgress maar niet wordt aangereoepen. De code hieronder is enkel een test, ik wil het later toepassen in een Win32 applicatie.
Waarom wordt OnProgress niet aangeroepen?
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| #include <iostream> #include <windows.h> using namespace std; class CallbackDownload: public IBindStatusCallback { public: HRESULT STDMETHODCALLTYPE OnStartBindingGetBindInfo(DWORD *pgrfBINDF, BINDINFO *pbindinfo); HRESULT STDMETHODCALLTYPE GetPriority(LONG *pnPriority); HRESULT STDMETHODCALLTYPE GetBindInfo(DWORD *pgrfBINDF, BINDINFO *pbindinfo); HRESULT STDMETHODCALLTYPE OnDataAvailable(DWORD grfBSCF, DWORD dwSize, FORMATETC *pfmtetc, STGMEDIUM *pstgmed); HRESULT STDMETHODCALLTYPE OnLowResource(DWORD dwReserved); HRESULT STDMETHODCALLTYPE OnObjectAvailable(REFIID riid, IUnknown *punk); HRESULT STDMETHODCALLTYPE OnProgress(ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText); HRESULT STDMETHODCALLTYPE OnStartBinding(DWORD dwReserved, IBinding *pbinding); HRESULT STDMETHODCALLTYPE OnStopBinding(HRESULT hrStatus, LPCWSTR szStatusText); private: }; int main() { CallbackDownload *downloadFile = NULL; URLDownloadToFile(NULL, "http://home.planet.nl/~ever0225/petersRPG.bmp", "test.bmp", 0, downloadFile); return 0; } /** * CALLBACK GEDEELTE VOOR URLDownloadToFile. */ HRESULT STDMETHODCALLTYPE CallbackDownload::GetBindInfo(DWORD *pgrfBINDF, BINDINFO *pbindinfo) { return S_OK; } HRESULT STDMETHODCALLTYPE CallbackDownload::GetPriority(LONG *pnPriority) { return S_OK; } HRESULT STDMETHODCALLTYPE CallbackDownload::OnDataAvailable(DWORD grfBSCF, DWORD dwSize, FORMATETC *pfmtetc, STGMEDIUM *pstgmed) { return S_OK; } HRESULT STDMETHODCALLTYPE CallbackDownload::OnLowResource(DWORD dwReserved) { return S_OK; } HRESULT STDMETHODCALLTYPE CallbackDownload::OnObjectAvailable(REFIID riid, IUnknown *punk) { return S_OK; } HRESULT STDMETHODCALLTYPE CallbackDownload::OnProgress(ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText) { MessageBox(NULL, "OnProgress aangeroepen!", "Informatie", MB_OK); return S_OK; } HRESULT STDMETHODCALLTYPE CallbackDownload::OnStartBinding(DWORD dwReserved, IBinding *pbinding) { return S_OK; } HRESULT STDMETHODCALLTYPE CallbackDownload::OnStopBinding(HRESULT hrStatus, LPCWSTR szStatusText) { return S_OK; } |