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
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::GetControllingUnknown
de .
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::Pause
et 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 IMoniker
moniker 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