Condividi tramite


CBindStatusCallback::StartAsyncDownload

Inizio che scaricano dati in modo asincrono dall'URL specificato.

HRESULT StartAsyncDownload( 
   T* pT,
   ATL_PDATAAVAILABLE pFunc,
   BSTR bstrURL,
   IUnknown* pUnkContainer = NULL,  
   BOOL bRelative = FALSE  
);

Parametri

  • pint
    [in] puntatore All'oggetto che richiede il trasferimento dei dati asincroni. L'oggetto CBindStatusCallback templatized sulla classe dell'oggetto.

  • pFunc
    [in] puntatore Alla funzione che riceve i dati che vengono letti. La funzione è un membro della classe dell'oggetto di tipo T. Vedere Note per la sintassi e un esempio.

  • bstrURL
    [in] l'url per ottenere i dati da. Può essere qualsiasi URL o un nome di file valido. Non è possibile NULL. Di seguito è riportato un esempio:

    CComBSTR mybstr =_T("http://somesite/data.htm")

  • pUnkContainer
    [in] IUnknown del contenitore. NULL per impostazione predefinita.

  • bRelative
    [in] contrassegno che indica se l'url è relativo o assoluto. FALSE per impostazione predefinita, per l'url è assoluto.

Valore restituito

Uno dei valori standard HRESULT.

Note

Ogni volta che i dati sono disponibili vengono inviati all'oggetto con OnDataAvailable. OnDataAvailable legge i dati e chiama la funzione indicata da pFunc (ad esempio, archiviare i dati o stampare lo schermo.

La funzione indicata da pFunc è un membro della classe dell'oggetto e presenta la sintassi seguente:

void Function_Name(

CBindStatusCallback<T>* pbsc,

BYTE* pBytes,

DWORD dwSize

);

Nell'esempio (ricavato dall'esempio In ASYNC ), la funzione OnData scrive i dati ricevuti in una casella di testo.

Esempio

void OnData(CBindStatusCallback<CATLAsync>* , BYTE* pBytes, DWORD /*cBytes*/)
{
   ATLTRACE(_T("OnData called\n"));

   m_bstrText.Append((LPCSTR)pBytes);
   if (::IsWindow(m_EditCtrl.m_hWnd))
   {
      USES_CONVERSION;
      _ATLTRY {
         ::SendMessage(m_EditCtrl.m_hWnd, WM_SETTEXT, 0, 
            (LPARAM)(LPCTSTR)COLE2CT((BSTR)m_bstrText));
      }
      _ATLCATCH( e ) {
         e; // unused
         // COLE2CT threw an exception!
         ::SendMessage(m_EditCtrl.m_hWnd, WM_SETTEXT, 0, 
            (LPARAM)_T("Could not allocate enough memory!!!"));
      }
   }
}

Requisiti

Header: atlctl.h

Vedere anche

Riferimenti

CBindStatusCallback Class

CBindStatusCallback::OnDataAvailable