Partager via


DispSink, exemple : gère les événements déclenchés à partir d'un serveur COM singleton via une interface de dispatch

Mise à jour : novembre 2007

L'exemple DispSink illustre un objet serveur singleton (objet qui ne peut avoir qu'une seule instance) qui possède sa propre double interface et une interface de dispatch utilisée pour le déclenchement d'événements.

L'exemple d'attributs DispSink est la version avec 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 DispSink.sln.

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

  3. Ouvrez deux instances ou plus de l'outil ActiveX Control Test Container et insérez le contrôle client, DispCtl, dans chaque instance. Pour plus d'informations sur la manière d'accéder à Test Container, consultez Test des propriétés et des événements à l'aide de Test Container.

  4. Appelez la méthode Connect sur tous les contrôles.

  5. Appelez la méthode Send sur l'un des contrôles. Dans le champ Type de paramètre de la boîte de dialogue Appeler les méthodes, spécifiez VT_BSTR, puis tapez n'importe quelle chaîne dans la zone Valeur du paramètre. Cliquez sur le bouton Invoke. La chaîne sera affichée au centre de tous les contrôles connectés.

  6. Appelez la méthode Disconnect sur tous les contrôles avant de les supprimer.

Fonctionnement de l'exemple

Le serveur est un objet singleton qui possède sa propre interface double ainsi qu'une interface de dispatch pour déclencher des événements. L'objet serveur reçoit les données par l'intermédiaire de la méthode Send de son interface double, puis les transmet à tous les composants connectés par le biais de l'événement Transfer sur son interface de dispatch.

Le client est un contrôle ActiveX qui contient un objet serveur. Le contrôle répond à l'événement Transfer déclenché par l'objet serveur. Il possède une interface double comprenant les méthodes Connect, Send et Disconnect. Si l'événement Transfer est déclenché à l'aide d'un variant contenant un BSTR, la chaîne est affichée au milieu du contrôle.

Mots clés

Cet exemple utilise les mots clés suivants :

#import ; CComAutoThreadModule ; CComSimpleThreadAllocator ; CoCreateInstance ; DECLARE_CLASSFACTORY_AUTO_THREAD() ; FireViewChange

Voir aussi

Autres ressources

Exemples ATL