Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le didacticiel ATL montre comment créer un contrôle avec prise en charge des points de connexion, comment ajouter des événements, puis comment implémenter le point de connexion. ATL implémente des points de connexion avec la IConnectionPointImpl classe.
Pour implémenter un point de connexion, vous avez deux choix :
- Implémenter votre propre source d’événement sortante en ajoutant un point de connexion au contrôle ou à l’objet.
- Réutiliser une interface de point de connexion définie dans une autre bibliothèque de types.
Dans les deux cas, l’Assistant Implémentation d’un point de connexion utilise une bibliothèque de types pour effectuer son travail.
Ajouter un point de connexion à un contrôle ou un objet
Définissez une dispinterface dans le bloc de bibliothèque du
.idlfichier. Si vous avez activé la prise en charge des points de connexion lorsque vous avez créé le contrôle avec l’Assistant Contrôle ATL, la dispinterface sera déjà créée. Si vous n’avez pas activé la prise en charge des points de connexion lors de la création du contrôle, vous devez ajouter manuellement une dispinterface au.idlfichier. Voici un exemple de dispinterface. Les interfaces sortantes ne sont pas requises pour être distribuées, mais de nombreux langages de script tels que VBScript et JScript nécessitent cela. Cet exemple utilise donc deux dispinterfaces :[ uuid(3233E37D-BCC0-4871-B277-48AE6B61224A), helpstring("Buddy Events") ] dispinterface DBuddyEvents { properties: methods: };Utilisez soit l’utilitaire
uuidgen.exesoit l’utilitaireguidgen.exepour générer un GUID.Ajoutez la dispinterface en tant qu’interface
[default,source]dans la coclasse de l’objet dans le fichier du.idlprojet. Là encore, si vous avez activé la prise en charge des points de connexion lors de la création du contrôle, l’Assistant Contrôle ATL crée l’entrée[default,source]. Pour ajouter manuellement cette entrée, ajoutez la ligne en gras :coclass Buddy { [default] interface IBuddy; [default,source] dispinterface DBuddyEvents; };Consultez le
.idlfichier dans l’exemple Circ ATL pour obtenir un exemple.Utilisez la vue de classe pour ajouter des méthodes et des propriétés à l’interface d’événement. Cliquez avec le bouton droit sur la classe en mode Classe, pointez sur Ajouter dans le menu contextuel, puis sélectionnez Ajouter un point de connexion.
Dans la zone de liste Interfaces sources de l’Assistant Implémenter un point de connexion, sélectionnez les interfaces de Project. Si vous choisissez une interface pour votre contrôle et sélectionnez OK, vous :
- Générez un fichier d’en-tête avec une classe proxy d’événement qui implémente le code qui effectue les appels sortants pour l’événement.
- Ajoutez une entrée à la carte des points de connexion.
Vous voyez également une liste de toutes les bibliothèques de types sur votre ordinateur. Utilisez uniquement l’une de ces autres bibliothèques de types pour définir votre point de connexion si vous souhaitez implémenter exactement la même interface sortante trouvée dans une autre bibliothèque de types.
Réutiliser une interface de point de connexion définie dans une autre bibliothèque de types
En mode Classe, cliquez avec le bouton droit sur une classe qui implémente une
BEGIN_COM_MAPmacro, pointez sur Ajouter dans le menu contextuel, puis sélectionnez Ajouter un point de connexion.Dans l’Assistant Implémenter un point de connexion, sélectionnez une bibliothèque de types et une interface dans la bibliothèque de types, puis sélectionnez Ajouter.
Modifiez le fichier
.idlpour soit :- Copiez la dispinterface à partir du fichier
.idlpour l’objet dont la source des événements est utilisée. - Utilisez l’instruction importlib sur cette bibliothèque de types.
- Copiez la dispinterface à partir du fichier