Нашел в рабочем проэкте
UINT CMainDlg::ThreadHendler_DownloadFile(LPVOID param)
{
thesIsDownloadedFileComplete = false;
ProgressDlg* progressDlgPtr = (ProgressDlg*)param;
HRESULT hr;
IUnknown* pUnk = NULL;
DownloadStatusCallback* statusCallbackPtr = new DownloadStatusCallback;
try
{
hr = statusCallbackPtr->QueryInterface(IID_IUnknown, (void**)&pUnk);
if (FAILED(hr))
{
throw Exception(_T("Error, during getting IUnknown iFace"));
}
hr = pUnk->QueryInterface(IID_IBindStatusCallback, (void**)&statusCallbackPtr);
if (FAILED(hr))
{
throw Exception(_T("Error, during getting IID_IBindStatusCallback iFace"));
}
statusCallbackPtr->SetProgressDlgPtr(progressDlgPtr);
if (FAILED(URLDownloadToFile(NULL, thesURL, thesVideoFilePath, 0, (IBindStatusCallback*)statusCallbackPtr)))
{
throw long(-1);
}
}
catch (Exception& e)
{
progressDlgPtr->Cancel();
::MessageBox(0, e.ToString(), _T("Error."), MB_OK);
statusCallbackPtr->Release();
delete statusCallbackPtr;
return -1;
}
catch (long e)
{
if (e)
{
progressDlgPtr->Cancel();
CString msg(_T("Downloading file is unavailable"));
::MessageBox(0, msg, _T("Error."), MB_OK | MB_ICONSTOP);
statusCallbackPtr->Release();
delete statusCallbackPtr;
return -1;
}
}
statusCallbackPtr->Release();
delete statusCallbackPtr;
thesIsDownloadedFileComplete = true;
return 0;
// [9/2/2004]
// pUnk->Release();
// delete pUnk;
// statusCallbackPtr->Release();
// delete statusCallbackPtr;
// gIsDownloaded = true;
// return 0;
}