Partager via


CBindStatusCallback::StartAsyncDownload

Démarre le téléchargement des données de manière asynchrone de l'URL spécifiée.

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

Paramètres

  • pinte
    [in] Pointeur vers l'objet demandant le transfert de données asynchrone. L'objet d' CBindStatusCallback est mis en modèle sur cette classe d'objet.

  • pFunc
    [in] Un pointeur vers une fonction qui accepte les données qui sont lues. La fonction est membre de votre classe d'objets de type T. Consultez Notes pour la syntaxe et un exemple.

  • bstrURL
    [in] L'URL pour obtenir des données de. Peut être une URL ou nom de fichier valide. Ne peut pas être NULL. Par exemple :

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

  • pUnkContainer
    [in] IUnknown du conteneur. NULL par défaut.

  • bRelative
    [in] Une balise qui indique si l'URL est relatif ou absolu. FALSE par défaut, c'est-à-dire l'URL est absolu.

Valeur de retour

L'une des valeurs standard d' HRESULT .

Notes

Chaque fois que les données sont disponibles elles sont destinées à l'objet via OnDataAvailable. OnDataAvailable lit les données et appelle la fonction pointée pointe vers le pFunc (par exemple, pour stocker les données ou les imprimer à l'écran).

La fonction pointée pointe vers le pFunc est membre de votre classe d'objet et a la syntaxe suivante :

void Function_Name(

CBindStatusCallback<T>* pbsc,

BYTE* pBytes,

DWORD dwSize

);

Dans l'exemple suivant (pris de l'exemple d' ASYNC ), la fonction OnData écrit les données reçues dans une zone de texte.

Exemple

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!!!"));
      }
   }
}

Configuration requise

Header: atlctl.h

Voir aussi

Référence

CBindStatusCallback, classe

CBindStatusCallback::OnDataAvailable