Еще один шедевр *индусов*
От: j s p Украина  
Дата: 30.10.06 14:18
Оценка: -1
Нашел в рабочем проэкте
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;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.