CAsyncMonikerFile, classe

Fournit les fonctionnalités nécessaires à l'utilisation de monikers asynchrones dans les contrôles ActiveX (anciennement contrôles OLE).

Syntaxe

class CAsyncMonikerFile : public CMonikerFile

Membres

Constructeurs publics

Nom Description
CAsyncMonikerFile ::CAsyncMonikerFile Construit un objet CAsyncMonikerFile.

Méthodes publiques

Nom Description
CAsyncMonikerFile ::Close Ferme et libère toutes les ressources.
CAsyncMonikerFile ::GetBinding Récupère un pointeur vers la liaison de transfert asynchrone.
CAsyncMonikerFile ::GetFormatEtc Récupère le format des données dans le flux.
CAsyncMonikerFile ::Open Ouvre un fichier de façon asynchrone.

Méthodes protégées

Nom Description
CAsyncMonikerFile ::CreateBindStatusCallback Crée un objet COM qui implémente IBindStatusCallback.
CAsyncMonikerFile ::GetBindInfo Appelé par la bibliothèque système OLE pour demander des informations sur le type de liaison à créer.
CAsyncMonikerFile ::GetPriority Appelé par la bibliothèque système OLE pour obtenir la priorité de la liaison.
CAsyncMonikerFile ::OnDataAvailable Appelé pour fournir des données au fur et à mesure qu’elles sont disponibles pour le client pendant les opérations de liaison asynchrones.
CAsyncMonikerFile ::OnLowResource Appelé quand les ressources sont faibles.
CAsyncMonikerFile ::OnProgress Appelé pour indiquer la progression du processus de téléchargement des données.
CAsyncMonikerFile ::OnStartBinding Appelé lors du démarrage de la liaison.
CAsyncMonikerFile ::OnStopBinding Appelé lorsque le transfert asynchrone est arrêté.

Notes

Dérivé de CMonikerFile, qui à son tour est dérivé de COleStreamFile, CAsyncMonikerFile utilise l’interface IMoniker pour accéder de manière asynchrone à tout flux de données, y compris le chargement de fichiers de manière asynchrone à partir d’une URL. Les fichiers peuvent être des propriétés de chemin de données des contrôles ActiveX.

Les monikers asynchrones sont principalement utilisés dans les applications internet et les contrôles ActiveX pour fournir une interface utilisateur réactive pendant les transferts de fichiers. L’utilisation de CDataPathProperty permet de fournir des propriétés asynchrones pour les contrôles ActiveX. L’objet CDataPathProperty obtient à plusieurs reprises un rappel pour indiquer la disponibilité de nouvelles données pendant un processus d’échange de propriétés long.

Pour plus d’informations sur l’utilisation de monikers asynchrones et de contrôles ActiveX dans des applications Internet, consultez les articles suivants :

Hiérarchie d'héritage

CObject

CFile

COleStreamFile

CMonikerFile

CAsyncMonikerFile

Spécifications

En-tête : afxole.h

CAsyncMonikerFile ::CAsyncMonikerFile

Construit un objet CAsyncMonikerFile.

CAsyncMonikerFile();

Notes

Il ne crée pas l’interface IBindHost . IBindHost est utilisé uniquement si vous le fournissez dans la Open fonction membre.

Pour obtenir une description de l’interface IBindHost , consultez le Kit de développement logiciel (SDK) Windows.

CAsyncMonikerFile ::Close

Appelez cette fonction pour fermer et libérer toutes les ressources.

virtual void Close();

Notes

Peut être appelé sur des fichiers non ouverts ou déjà fermés.

CAsyncMonikerFile ::CreateBindStatusCallback

Crée un objet COM qui implémente IBindStatusCallback.

virtual IUnknown* CreateBindStatusCallback(IUnknown* pUnkControlling);

Paramètres

pUnkControlling
Pointeur vers le contrôle inconnu (externe IUnknown) ou NULL si l’agrégation n’est pas utilisée.

Valeur de retour

Si pUnkControlling n’est pas NULL, la fonction retourne un pointeur vers l’intérieur IUnknown sur un nouvel objet COM prenant en charge IBindStatusCallback. Si pUnkControlling la valeur est NULL, la fonction retourne un pointeur vers un IUnknown nouvel objet COM prenant en charge IBindStatusCallback.

Notes

CAsyncMonikerFile nécessite un objet COM qui implémente IBindStatusCallback. MFC implémente un tel objet et est aggregatable. Vous pouvez remplacer CreateBindStatusCallback pour retourner votre propre objet COM. Votre objet COM peut agréger l’implémentation de MFC en appelant CreateBindStatusCallback avec le contrôle inconnu de votre objet COM. Les objets COM implémentés à l’aide de la CCmdTarget prise en charge COM peuvent récupérer le contrôle inconnu à l’aide CCmdTarget::GetControllingUnknownde .

Vous pouvez également déléguer votre objet COM à l’implémentation de MFC en appelant CreateBindStatusCallback( NULL ).

CAsyncMonikerFile ::Open appelle CreateBindStatusCallback.

Pour plus d’informations sur les monikers asynchrones et la liaison asynchrone, consultez l’interface IBindStatusCallback et le fonctionnement de la liaison asynchrone et du stockage. Pour une discussion sur l’agrégation, consultez Agrégation. Les trois rubriques se trouvent dans le Kit de développement logiciel (SDK) Windows.

CAsyncMonikerFile ::GetBindInfo

Appelé à partir du client d’un moniker asynchrone pour indiquer au moniker asynchrone comment il souhaite lier.

virtual DWORD GetBindInfo() const;

Valeur de retour

Récupère les paramètres pour IBindStatusCallBack. Pour obtenir une description de l’interface IBindStatusCallback , consultez le Kit de développement logiciel (SDK) Windows.

Notes

L’implémentation par défaut définit la liaison comme asynchrone, pour utiliser un support de stockage (un flux) et pour utiliser le modèle push de données. Remplacez cette fonction si vous souhaitez modifier le comportement de la liaison.

L’une des raisons de cette opération consisterait à lier à l’aide du modèle d’extraction de données au lieu du modèle push de données. Dans un modèle d’extraction de données, le client pilote l’opération de liaison et le moniker fournit uniquement des données au client lorsqu’il est lu. Dans un 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.

CAsyncMonikerFile ::GetBinding

Appelez cette fonction pour récupérer un pointeur vers la liaison de transfert asynchrone.

IBinding* GetBinding() const;

Valeur de retour

Pointeur vers l’interface IBinding fournie lorsque le transfert asynchrone commence. Retourne NULL si, pour une raison quelconque, le transfert ne peut pas être effectué de manière asynchrone.

Notes

Cela vous permet de contrôler le processus de transfert de données via l’interface IBinding , par exemple, avec IBinding::Abort, IBinding::Pauseet IBinding::Resume.

Pour obtenir une description de l’interface IBinding , consultez le Kit de développement logiciel (SDK) Windows.

CAsyncMonikerFile ::GetFormatEtc

Appelez cette fonction pour récupérer le format des données dans le flux.

FORMATETC* GetFormatEtc() const;

Valeur de retour

Pointeur vers la structure Windows FORMATETC pour le flux actuellement ouvert. Retourne NULL si le moniker n’a pas été lié, s’il n’est pas asynchrone ou si l’opération asynchrone n’a pas commencé.

CAsyncMonikerFile ::GetPriority

Appelé à partir du client d’un moniker asynchrone, car le processus de liaison commence à recevoir la priorité donnée au thread pour l’opération de liaison.

virtual LONG GetPriority() const;

Valeur de retour

Priorité à laquelle le transfert asynchrone aura lieu. Un des indicateurs de priorité de thread standard : THREAD_PRIORITY_ABOVE_NORMAL, THREAD_PRIORITY_BELOW_NORMAL, THREAD_PRIORITY_HIGHEST, THREAD_PRIORITY_IDLE, THREAD_PRIORITY_LOWEST, THREAD_PRIORITY_NORMAL et THREAD_PRIORITY_TIME_CRITICAL. Consultez la fonction Windows SetThreadPriority pour obtenir une description de ces valeurs.

Notes

GetPriority ne doit pas être appelé directement. THREAD_PRIORITY_NORMAL est retourné par l’implémentation par défaut.

CAsyncMonikerFile ::OnDataAvailable

Un moniker asynchrone appelle OnDataAvailable pour fournir des données au client au fur et à mesure qu’il devient disponible, pendant les opérations de liaison asynchrones.

virtual void OnDataAvailable(DWORD dwSize, DWORD bscfFlag);

Paramètres

dwSize
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 pour l’opération ou qu’aucune quantité spécifique n’est devenue disponible.

bscfFlag
Valeur d’énumération BSCF. Il peut s’agir d’une ou plusieurs des valeurs suivantes :

  • BSCF_FIRSTDATANOTIFICATION Identifie le premier appel à OnDataAvailable une opération de liaison donnée.

  • BSCF_INTERMEDIATEDATANOTIFICATION Identifie un appel intermédiaire pour OnDataAvailable une opération de liaison.

  • BSCF_LASTDATANOTIFICATION Identifie le dernier appel pour OnDataAvailable une opération de liaison.

Notes

L’implémentation par défaut de cette fonction est sans effet. Consultez l’exemple suivant pour obtenir un exemple d’implémentation.

Exemple

void CMyMoniker::OnDataAvailable(DWORD dwSize, DWORD bscfFlag)
{
   if ((bscfFlag & BSCF_FIRSTDATANOTIFICATION) != 0)
   {
      m_dwReadBefore = 0;
      m_strText.Empty();
   }

   DWORD dwArriving = dwSize - m_dwReadBefore;

   if (dwArriving > 0)
   {
      int nLen = m_strText.GetLength();
      ASSERT((DWORD)nLen == m_dwReadBefore);
      LPTSTR psz = m_strText.GetBuffer(nLen + dwArriving);
      Read(psz + nLen, dwArriving);
      m_strText.ReleaseBuffer(nLen + dwArriving);
      m_dwReadBefore = dwSize;
   }
}

CAsyncMonikerFile ::OnLowResource

Appelé par le moniker lorsque les ressources sont faibles.

virtual void OnLowResource();

Notes

Appels d’implémentation GetBinding( )-> Abort( )par défaut .

CAsyncMonikerFile ::OnProgress

Appelé à plusieurs reprises par le moniker pour indiquer la progression actuelle de cette opération de liaison, généralement à intervalles raisonnables pendant une longue opération.

virtual void OnProgress(
    ULONG ulProgress,
    ULONG ulProgressMax,
    ULONG ulStatusCode,
    LPCTSTR szStatusText);

Paramètres

ulProgress
Indique la progression actuelle de l’opération de liaison par rapport au maximum attendu indiqué dans ulProgressMax.

ulProgressMax
Indique la valeur maximale attendue d’ulProgress pendant la durée des appels à OnProgress cette opération.

ulStatusCode
Fournit des informations supplémentaires sur la progression de l’opération de liaison. Les valeurs valides sont extraites de l’énumération BINDSTATUS . Consultez remarques pour connaître les valeurs possibles.

szStatusText
Informations sur la progression actuelle, en fonction de la valeur d’ulStatusCode. Consultez remarques pour connaître les valeurs possibles.

Notes

Les valeurs possibles pour ulStatusCode (et szStatusText pour chaque valeur) sont les suivantes :

Valeur Description
BINDSTATUS_FINDINGRESOURCE L’opération de liaison recherche la ressource qui contient l’objet ou le stockage lié. SzStatusText fournit le nom complet de la ressource recherchée (par exemple, « www.microsoft.com »).
BINDSTATUS_CONNECTING L’opération de liaison se connecte à la ressource qui contient l’objet ou le stockage auquel il est lié. SzStatusText fournit le nom complet de la ressource connectée (par exemple, une adresse IP).
BINDSTATUS_SENDINGREQUEST L’opération de liaison demande l’objet ou le stockage auquel il est lié. SzStatusText fournit le nom complet de l’objet (par exemple, un nom de fichier).
BINDSTATUS_REDIRECTING L’opération de liaison a été redirigée vers un autre emplacement de données. SzStatusText fournit le nom complet du nouvel emplacement de données.
BINDSTATUS_USINGCACHEDCOPY L’opération de liaison récupère l’objet ou le stockage demandé à partir d’une copie mise en cache. SzStatusText est NULL.
BINDSTATUS_BEGINDOWNLOADDATA L’opération de liaison a commencé à recevoir l’objet ou le stockage auquel il est lié. SzStatusText fournit le nom complet de l’emplacement des données.
BINDSTATUS_DOWNLOADINGDATA L’opération de liaison continue de recevoir l’objet ou le stockage auquel il est lié. SzStatusText fournit le nom complet de l’emplacement des données.
BINDSTATUS_ENDDOWNLOADDATA L’opération de liaison a fini de recevoir l’objet ou le stockage auquel il est lié. SzStatusText fournit le nom complet de l’emplacement des données.
BINDSTATUS_CLASSIDAVAILABLE Une instance de l’objet lié est juste sur le point d’être créée. SzStatusText fournit le CLSID du nouvel objet au format de chaîne, ce qui permet au client d’annuler l’opération de liaison, si vous le souhaitez.

CAsyncMonikerFile ::OnStartBinding

Remplacez cette fonction dans vos classes dérivées pour effectuer des actions lors du démarrage de la liaison.

virtual void OnStartBinding();

Notes

Cette fonction est appelée par le moniker. L'implémentation par défaut n'exécute aucune opération.

CAsyncMonikerFile ::OnStopBinding

Appelé par le moniker à la fin de l’opération de liaison.

virtual void OnStopBinding(HRESULT hresult, LPCTSTR szError);

Paramètres

hresult
HRESULT qui est la valeur d’erreur ou d’avertissement.

szErrort
Chaîne de caractères décrivant l’erreur.

Notes

Remplacez cette fonction pour effectuer des actions lorsque le transfert est arrêté. Par défaut, la fonction libère IBinding.

Pour obtenir une description de l’interface IBinding , consultez le Kit de développement logiciel (SDK) Windows.

CAsyncMonikerFile ::Open

Appelez cette fonction membre pour ouvrir un fichier de façon asynchrone.

virtual BOOL Open(
    LPCTSTR lpszURL,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszURL,
    IBindHost* pBindHost,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    IBindHost* pBindHost,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszURL,
    IServiceProvider* pServiceProvider,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    IServiceProvider* pServiceProvider,
    CFileException* pError = NULL);

virtual BOOL Open(
    LPCTSTR lpszURL,
    IUnknown* pUnknown,
    CFileException* pError = NULL);

virtual BOOL Open(
    IMoniker* pMoniker,
    IUnknown* pUnknown,
    CFileException* pError = NULL);

Paramètres

lpszURL
Pointeur vers le fichier à ouvrir de manière asynchrone. Le fichier peut être n’importe quelle URL ou nom de fichier valide.

pError
Pointeur vers les exceptions de fichier. En cas d’erreur, elle est définie sur la cause.

pMoniker
Pointeur vers l’interface IMonikermoniker asynchrone , moniker précis qui est la combinaison du moniker du document, que vous pouvez récupérer avec IOleClientSite::GetMoniker(OLEWHICHMK_CONTAINER), et un moniker créé à partir du nom du chemin d’accès. Le contrôle peut utiliser ce moniker pour lier, mais ce n’est pas le moniker que le contrôle doit enregistrer.

pBindHost
Pointeur vers l’interface IBindHost qui sera utilisé pour créer le moniker à partir d’un chemin d’accès potentiellement relatif. Si l’hôte de liaison n’est pas valide ou ne fournit pas de moniker, l’appel est défini par défaut Open(lpszFileName,pError)sur . Pour obtenir une description de l’interface IBindHost , consultez le Kit de développement logiciel (SDK) Windows.

pServiceProvider
Pointeur vers l'interface IServiceProvider. Si le fournisseur de services n’est pas valide ou ne parvient pas à fournir le service IBindHost, l’appel est défini par défaut Open(lpszFileName,pError)sur .

pUnknown
Pointeur vers l'interface IUnknown. Si IServiceProvider elle est trouvée, les requêtes de fonction pour IBindHost. Si le fournisseur de services n’est pas valide ou ne parvient pas à fournir le service IBindHost, l’appel est défini par défaut Open(lpszFileName,pError)sur .

Valeur de retour

Différent de zéro si le fichier est ouvert correctement ; sinon 0.

Notes

Cet appel lance le processus de liaison.

Vous pouvez utiliser une URL ou un nom de fichier pour le paramètre lpszURL . Par exemple :

CMyMoniker *pMyMoniker = new CMyMoniker();
pMyMoniker->Open(_T("http://www.microsoft.com"));

- ou -

CMyMoniker *pMyMoniker = new CMyMoniker();
pMyMoniker->Open(_T("file:c:\\mydata.dat"));

Voir aussi

CMonikerFile, classe
Graphique hiérarchique
CMonikerFile, classe
CDataPathProperty, classe