Partager via


ASYNC, exemple d'attributs : télécharge des données en mode asynchrone

Mise à jour : novembre 2007

L'exemple d'attributs ASYNC crée un contrôle qui télécharge les données en mode asynchrone à partir d'une URL. Le contrôle implémente l'interface IBindStatusCallback. En général, vous téléchargez de manière asynchrone des propriétés ou des objets binaires volumineux. Cela permet de ne pas bloquer l'interface utilisateur du contrôle pendant des opérations réseau susceptibles de durer longtemps. Le téléchargement asynchrone laisse également à l'utilisateur la possibilité d'abandonner le téléchargement. ATL utilise des fonctions WinInet en mode interne pour implémenter le téléchargement asynchrone.

L'exemple ASYNC est la version sans attributs de cet exemple.

Note de sécurité :

Cet exemple de code est fourni pour illustrer un concept et ne doit pas être utilisé dans des applications ou des sites Web, car il peut ne pas illustrer les pratiques de programmation les plus sûres. Microsoft n'assume aucune responsabilité pour tout dommage indirect ou consécutif en cas d'utilisation de l'exemple de code à des fins autres que celles prévues.

Pour obtenir des exemples et des instructions d'installation :

  • Dans le menu ? (Aide) de Visual Studio, cliquez sur Exemples.

    Pour plus d'informations, consultez Recherche des fichiers d'exemple.

  • La liste la plus récente et la plus complète d'exemples est disponible en ligne à partir de la page Visual Studio 2008 Samples.

  • Des exemples sont également disponibles sur le disque dur de votre ordinateur. Des exemples et un fichier Readme sont stockés par défaut dans un dossier sous \Program Files\Visual Studio 9.0\Samples\. Pour les éditions Express de Visual Studio, tous les exemples sont disponibles en ligne.

Génération et exécution de l'exemple

Pour générer et exécuter cet exemple

  1. Ouvrez le fichier solution Async.sln.

  2. Dans le menu Générer, cliquez sur Générer la solution.

  3. Une fois l'exemple généré, ouvrez ATLAsync.htm dans votre navigateur Web et suivez les instructions. Vous définissez la propriété URL du contrôle ASYNC et démarrez le téléchargement. Pendant le téléchargement, les données s'affichent dans le contrôle ASYNC.

Vous pouvez tester ce contrôle dans ActiveX Control Test Container. Pour plus d'informations sur l'accès à l'outil Test Container et son utilisation pour tester un contrôle, consultez Test des propriétés et des événements à l'aide de Test Container.

Fonctionnement de l'exemple

ASYNC crée un contrôle d'édition sous-classé avec une seule propriété nommée URL. La propriété URL est un BSTR qui représente une URL pointant vers des données. L'exemple ASYNC utilise la classe ATL CBindStatusCallback pour implémenter le téléchargement asynchrone. Lorsque l'utilisateur du contrôle définit la propriété URL, ASYNC crée un objet CBindStatusCallback. L'exemple appelle ensuite la méthode CBindStatusCallback::StartAsyncDownload à laquelle sont passés à la fois l'URL et un pointeur vers une fonction de rappel. Cette fonction, CAtlAsync::OnData, est appelée par l'objet CBindStatusCallback et récupère les données binaires en provenance de l'URL au fur et à mesure de leur réception. CAtlAsync::OnData envoie simplement les données reçues au contrôle d'édition sous-classé, à l'endroit où elles sont affichées.

Pour obtenir un exemple de surclassement de contrôles Windows à l'aide d'ATL, consultez l'exemple ATL SubEdit.

Attributs

Cet exemple utilise les attributs suivants :

coclass, default, dual, helpstring, id, implements_category, in, module, object, out, pointer_default, progid, propget, propput, registration_script, retval, threading, uuid, version, vi_progid

Mots clés

Cet exemple utilise les mots clés suivants :

ALT_MSG_MAP; ATLTRACE ; BEGIN_COM_MAP; BEGIN_MSG_MAP; BEGIN_OBJECT_MAP; BEGIN_PROPERTY_MAP; CBindStatusCallback::Download; CComBSTR::Append; CComCoClass; CComControl; CComModule::GetClassObject; CComModule::GetLockCount; CComModule::Init; CComModule::RegisterServer; CComModule::Term; CComModule::UnregisterServer; CComObjectRoot; COM_INTERFACE_ENTRY; COM_INTERFACE_ENTRY_IMPL; DECLARE_REGISTRY_RESOURCEID; DisableThreadLibraryCalls; DLL_PROCESS_ATTACH; DLL_PROCESS_DETACH; DllMain; END_COM_MAP; END_MSG_MAP; END_OBJECT_MAP; END_PROPERTY_MAP; IDataObjectImpl; IDispatchImpl; IObjectSafetyImpl; IOleControlImpl; IOleInPlaceActiveObjectImpl; IOleInPlaceObjectWindowlessImpl; IOleInPlaceObjectWindowlessImpl::SetObjectRects; IOleObjectImpl; IPerPropertyBrowsingImpl; IPersistPropertyBagImpl; IPersistStorageImpl; IPersistStreamInitImpl; IProvideClassInfo2Impl; IQuickActivateImpl; IsWindow; IViewObjectExImpl; MESSAGE_HANDLER; OBJECT_ENTRY; PROP_ENTRY; SendMessage; USES_CONVERSION

Remarque :

Certains exemples, tels que celui-ci, n'ont pas été modifiés pour refléter les changements apportés aux Assistants, aux bibliothèques et au compilateur Visual C++, mais ils illustrent bien l'exécution de la tâche souhaitée.

Voir aussi

Autres ressources

Exemples d'attributs ATL