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