Partage via


CBindStatusCallback, classe

Cette classe implémente l’interface IBindStatusCallback.

Important

Cette classe et ses membres ne peuvent pas être utilisés dans les applications qui s’exécutent dans Windows Runtime.

Syntaxe

template <class T,
    int nBindFlags = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_GETNEWESTVERSION | BINDF_NOWRITECACHE>
class ATL_NO_VTABLE CBindStatusCallback : public CComObjectRootEx <T ::_ThreadModel::ThreadModelNoCS>,
    public IBindStatusCallbackImpl<T>

Paramètres

T
Votre classe contenant la fonction qui sera appelée à mesure que les données sont reçues.

nBindFlags
Spécifie les indicateurs de liaison retournés par GetBindInfo. L’implémentation par défaut définit la liaison comme asynchrone, récupère la version la plus récente de l’objet/données et ne stocke pas les données récupérées dans le cache du disque.

Membres

Constructeurs publics

Nom Description
CBindStatusCallback ::CBindStatusCallback Constructeur .
CBindStatusCallback ::~CBindStatusCallback Destructeur.

Méthodes publiques

Nom Description
CBindStatusCallback ::D ownload Méthode statique qui démarre le processus de téléchargement, crée un CBindStatusCallback objet et appelle StartAsyncDownload.
CBindStatusCallback ::GetBindInfo Appelé par le moniker asynchrone pour demander des informations sur le type de liaison à créer.
CBindStatusCallback ::GetPriority Appelé par le moniker asynchrone pour obtenir la priorité de l’opération de liaison. L’implémentation ATL retourne E_NOTIMPL.
CBindStatusCallback ::OnDataAvailable Appelé pour fournir des données à votre application dès qu’elle devient disponible. Lit les données, puis appelle la fonction transmise pour utiliser les données.
CBindStatusCallback ::OnLowResource Appelé quand les ressources sont faibles. L’implémentation ATL retourne S_OK.
CBindStatusCallback ::OnObjectAvailable Appelé par le moniker asynchrone pour passer un pointeur d’interface objet à votre application. L’implémentation ATL retourne S_OK.
CBindStatusCallback ::OnProgress Appelé pour indiquer la progression d’un processus de téléchargement de données. L’implémentation ATL retourne S_OK.
CBindStatusCallback ::OnStartBinding Appelé lors du démarrage de la liaison.
CBindStatusCallback ::OnStopBinding Appelé lorsque le transfert de données asynchrone est arrêté.
CBindStatusCallback ::StartAsyncDownload Initialise les octets disponibles et les octets lus à zéro, crée un objet de flux de type push à partir d’une URL et appelle OnDataAvailable chaque fois que les données sont disponibles.

Membres de données publics

Nom Description
CBindStatusCallback ::m_dwAvailableToRead Nombre d’octets disponibles pour la lecture.
CBindStatusCallback ::m_dwTotalRead Nombre total d’octets lus.
CBindStatusCallback ::m_pFunc Pointeur vers la fonction appelée lorsque les données sont disponibles.
CBindStatusCallback ::m_pT Pointeur vers l’objet demandant le transfert de données asynchrone.
CBindStatusCallback ::m_spBindCtx Pointeur vers l’interface IBindCtx pour l’opération de liaison actuelle.
CBindStatusCallback ::m_spBinding Pointeur vers l’interface IBinding pour l’opération de liaison actuelle.
CBindStatusCallback ::m_spMoniker Pointeur vers l’interface IMoniker pour l’URL à utiliser.
CBindStatusCallback ::m_spStream Pointeur vers l’interface IStream pour le transfert de données.

Notes

La classe CBindStatusCallback implémente l’interface IBindStatusCallback. IBindStatusCallback doit être implémenté par votre application pour qu’elle puisse recevoir des notifications à partir d’un transfert de données asynchrone. Le moniker asynchrone fourni par le système utilise IBindStatusCallback des méthodes pour envoyer et recevoir des informations sur le transfert de données asynchrone vers et depuis votre objet.

En règle générale, l’objet CBindStatusCallback est associé à une opération de liaison spécifique. Par exemple, dans l’exemple ASYNC , lorsque vous définissez la propriété URL, il crée un CBindStatusCallback objet dans l’appel à Download:

STDMETHOD(put_URL)(BSTR newVal)
{
   HRESULT hResult = E_UNEXPECTED;

   ATLTRACE(_T("IATLAsync::put_URL\n"));
   m_bstrURL = newVal;

   if (::IsWindow(m_EditCtrl.m_hWnd))
   {
      ::SendMessage(m_EditCtrl.m_hWnd, WM_SETTEXT, 0,  (LPARAM)_T(""));
      hResult = CBindStatusCallback<CATLAsync>::Download(this, &CATLAsync::OnData, 
         m_bstrURL, m_spClientSite, FALSE);
   }

   return hResult;
}

Le moniker asynchrone utilise la fonction OnData de rappel pour appeler votre application lorsqu’elle a des données. Le moniker asynchrone est fourni par le système.

Hiérarchie d'héritage

CComObjectRootBase

IBindStatusCallback

CComObjectRootEx

CBindStatusCallback

Spécifications

En-tête : atlctl.h

CBindStatusCallback ::CBindStatusCallback

Constructeur .

CBindStatusCallback();

Notes

Crée un objet pour recevoir des notifications concernant le transfert de données asynchrone. En règle générale, un objet est créé pour chaque opération de liaison.

Le constructeur initialise également m_pT et m_pFunc sur NULL.

CBindStatusCallback ::~CBindStatusCallback

Destructeur.

~CBindStatusCallback();

Notes

Libère toutes les ressources allouées.

CBindStatusCallback ::D ownload

Crée un CBindStatusCallback objet et des appels StartAsyncDownload pour commencer à télécharger des données de manière asynchrone à partir de l’URL spécifiée.

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

Paramètres

Pt
[in] Pointeur vers l’objet demandant le transfert de données asynchrone. L’objet CBindStatusCallback est templaté sur la classe de cet objet.

pFunc
[in] Pointeur vers la fonction qui reçoit les données lues. La fonction est membre de la classe de type Tde votre objet. Consultez StartAsyncDownload pour obtenir une syntaxe et un exemple.

bstrURL
[in] URL à partir de laquelle obtenir des données. Il peut s’agir d’une URL ou d’un nom de fichier valide. Ne peut pas avoir la valeur NULL. Par exemple :

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

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

bRelative
[in] Indicateur indiquant si l’URL est relative ou absolue. FALSE par défaut, ce qui signifie que l’URL est absolue.

Valeur de retour

Une des valeurs HRESULT standard.

Notes

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

CBindStatusCallback ::GetBindInfo

Appelé pour dire au moniker comment lier.

STDMETHOD(GetBindInfo)(
    DWORD* pgrfBSCF,
    BINDINFO* pbindinfo);

Paramètres

pgrfBSCF
[out] Pointeur vers des valeurs d’énumération BINDF indiquant comment l’opération de liaison doit se produire. Par défaut, définissez les valeurs d’énumération suivantes :

BINDF_ASYNCHRONOUS téléchargement asynchrone.

OnDataAvailable BINDF_ASYNCSTORAGE retourne E_PENDING lorsque les données ne sont pas encore disponibles plutôt que de bloquer jusqu’à ce que les données soient disponibles.

BINDF_GETNEWESTVERSION L’opération de liaison doit récupérer la version la plus récente des données.

BINDF_NOWRITECACHE L’opération de liaison ne doit pas stocker les données récupérées dans le cache de disque.

pbindinfo
[in, out] Pointeur vers la BINDINFO structure donnant plus d’informations sur la façon dont l’objet souhaite que la liaison se produise.

Valeur de retour

Une des valeurs HRESULT standard.

Notes

L’implémentation par défaut définit la liaison comme asynchrone et utilise le modèle push de données. Dans le modèle push de données, le moniker pilote l’opération de liaison asynchrone et avertit en permanence le client chaque fois que de nouvelles données sont disponibles.

CBindStatusCallback ::GetPriority

Appelé par le moniker asynchrone pour obtenir la priorité de l’opération de liaison.

STDMETHOD(GetPriority)(LONG* pnPriority);

Paramètres

pnPriority
[out] Adresse de la variable LONG qui, en cas de réussite, reçoit la priorité.

Valeur de retour

Retourne E_NOTIMPL.

CBindStatusCallback ::m_dwAvailableToRead

Peut être utilisé pour stocker le nombre d’octets disponibles pour être lus.

DWORD m_dwAvailableToRead;

Notes

Initialisé à zéro en StartAsyncDownload.

CBindStatusCallback ::m_dwTotalRead

Total cumulé d’octets lus dans le transfert de données asynchrone.

DWORD m_dwTotalRead;

Notes

Incrémenté chaque fois OnDataAvailable est appelé par le nombre d’octets réellement lus. Initialisé à zéro en StartAsyncDownload.

CBindStatusCallback ::m_pFunc

La fonction pointée par m_pFunc est appelée OnDataAvailable après avoir lu les données disponibles (par exemple, pour stocker les données ou l’imprimer à l’écran).

ATL_PDATAAVAILABLE m_pFunc;

Notes

La fonction pointée par m_pFunc est un membre de la classe de votre objet et a la syntaxe suivante :

void Function_Name(
   CBindStatusCallback<T>* pbsc,
   BYTE* pBytes,
   DWORD dwSize
   );

CBindStatusCallback ::m_pT

Pointeur vers l’objet demandant le transfert de données asynchrone.

T* m_pT;

Notes

L’objet CBindStatusCallback est templaté sur la classe de cet objet.

CBindStatusCallback ::m_spBindCtx

Pointeur vers une interface IBindCtx qui fournit l’accès au contexte de liaison (objet qui stocke des informations sur une opération de liaison moniker particulière).

CComPtr<IBindCtx> m_spBindCtx;

Notes

Initialisé en StartAsyncDownload.

CBindStatusCallback ::m_spBinding

Pointeur vers l’interface IBinding de l’opération de liaison actuelle.

CComPtr<IBinding> m_spBinding;

Notes

Initialisé dans OnStartBinding et libéré dans OnStopBinding.

CBindStatusCallback ::m_spMoniker

Pointeur vers l’interface IMoniker à utiliser pour l’URL.

CComPtr<IMoniker> m_spMoniker;

Notes

Initialisé en StartAsyncDownload.

CBindStatusCallback ::m_spStream

Pointeur vers l’interface IStream de l’opération de liaison actuelle.

CComPtr<IStream> m_spStream;

Notes

Initialisé à OnDataAvailable partir de la STGMEDIUM structure lorsque l’indicateur BCSF est BCSF_FIRSTDATANOTIFICATION et libéré lorsque l’indicateur BCSF est BCSF_LASTDATANOTIFICATION.

CBindStatusCallback ::OnDataAvailable

Les appels OnDataAvailable moniker asynchrones fournis par le système pour fournir des données à l’objet au fur et à mesure qu’il devient disponible.

STDMETHOD(
    OnDataAvailable)(DWORD grfBSCF,
    DWORD dwSize,
    FORMATETC* /* pformatetc */,
    STGMEDIUM* pstgmed);

Paramètres

grfBSCF
[in] Valeur d’énumération BSCF. Une ou plusieurs des options suivantes : BSCF_FIRSTDATANOTIFICATION, BSCF_INTERMEDIARYDATANOTIFICATION ou BSCF_LASTDATANOTIFICATION.

dwSize
[in] Quantité cumulative (en octets) de données disponibles depuis le début de la liaison. Peut être égal à zéro, indiquant que la quantité de données n’est pas pertinente ou qu’aucune quantité spécifique n’est devenue disponible.

pformatetc
[in] Pointeur vers la structure FORMATETC qui contient le format des données disponibles. S’il n’existe aucun format, il peut être CF_NULL.

pstgmed
[in] Pointeur vers la structure STGMEDIUM qui contient les données réelles maintenant disponibles.

Valeur de retour

Une des valeurs HRESULT standard.

Notes

OnDataAvailable lit les données, puis appelle une méthode de la classe de votre objet (par exemple, pour stocker les données ou l’imprimer à l’écran). Pour plus d’informations, consultez CBindStatusCallback ::StartAsyncDownload .

CBindStatusCallback ::OnLowResource

Appelé quand les ressources sont faibles.

STDMETHOD(OnLowResource)(DWORD /* dwReserved */);

Paramètres

dwReserved
Réservé.

Valeur de retour

Retourne S_OK.

CBindStatusCallback ::OnObjectAvailable

Appelé par le moniker asynchrone pour passer un pointeur d’interface objet à votre application.

STDMETHOD(OnObjectAvailable)(REFID /* riid */, IUnknown* /* punk */);

Paramètres

riid
Identificateur d’interface de l’interface demandée. Inutilisé.

Punk
Adresse de l’interface IUnknown. Inutilisé.

Valeur de retour

Retourne S_OK.

CBindStatusCallback ::OnProgress

Appelé pour indiquer la progression d’un processus de téléchargement de données.

STDMETHOD(OnProgress)(
    ULONG /* ulProgress */,
    ULONG /* ulProgressMax */,
    ULONG /* ulStatusCode */,
    LPCWSTRONG /* szStatusText */);

Paramètres

ulProgress
Entier long non signé. Inutilisé.

ulProgressMax
Entier long non signé inutilisé.

ulStatusCode
Entier long non signé. Inutilisé.

szStatusText
Adresse d’une valeur de chaîne. Inutilisé.

Valeur de retour

Retourne S_OK.

CBindStatusCallback ::OnStartBinding

Définit le membre de données m_spBinding au IBinding pointeur dans pBinding.

STDMETHOD(OnStartBinding)(DWORD /* dwReserved */, IBinding* pBinding);

Paramètres

dwReserved
Réservé pour un usage futur.

pBinding
[in] Adresse de l’interface IBinding de l’opération de liaison actuelle. Il ne peut pas s’agir de NULL. Le client doit appeler AddRef sur ce pointeur pour conserver une référence à l’objet de liaison.

CBindStatusCallback ::OnStopBinding

Libère le IBinding pointeur dans le membre de données m_spBinding.

STDMETHOD(OnStopBinding)(HRESULT hresult, LPCWSTR /* szError */);

Paramètres

Hresult
Code d’état retourné à partir de l’opération de liaison.

szError
Adresse d’une valeur de chaîne. Inutilisé.

Notes

Appelé par le moniker asynchrone fourni par le système pour indiquer la fin de l’opération de liaison.

CBindStatusCallback ::StartAsyncDownload

Commence à télécharger des données de manière asynchrone à partir de l’URL spécifiée.

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

Paramètres

Pt
[in] Pointeur vers l’objet demandant le transfert de données asynchrone. L’objet CBindStatusCallback est templaté sur la classe de cet objet.

pFunc
[in] Pointeur vers la fonction qui reçoit les données lues. La fonction est membre de la classe de type Tde votre objet. Consultez les remarques relatives à la syntaxe et à un exemple.

bstrURL
[in] URL à partir de laquelle obtenir des données. Il peut s’agir d’une URL ou d’un nom de fichier valide. Ne peut pas avoir la valeur NULL. Par exemple :

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

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

bRelative
[in] Indicateur indiquant si l’URL est relative ou absolue. FALSE par défaut, ce qui signifie que l’URL est absolue.

Valeur de retour

Une des valeurs HRESULT standard.

Notes

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

La fonction pointée par pFunc est membre de la classe de votre objet et a la syntaxe suivante :

void Function_Name(
    CBindStatusCallback<T>* pbsc,
    BYTE* pBytes,
    DWORD dwSize);

Dans l’exemple suivant (extrait de l’exemple 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!!!"));
      }
   }
}

Voir aussi

Vue d’ensemble de la classe