Interfaces requises (COM)
Le tableau ci-dessous répertorie les interfaces de conteneur de contrôles ActiveX et indique les interfaces facultatives, et celles qui sont obligatoires et doivent être implémentées par les conteneurs de contrôle.
Interface | Requis ? | Commentaires |
---|---|---|
IOleClientSite |
Oui |
|
IAdviseSink |
Non |
Uniquement lorsque le conteneur souhaite (a) des notifications de modification de données (contrôles avec IDataObject), (b) afficher la notification de modification (contrôles qui ne sont pas actifs et qui ont IViewObject ou IViewObject2) et (c) d’autres notifications de contrôles agissant en tant qu’objets incorporés standard. |
IOleInPlaceSite |
Oui |
|
IOleControlSite |
Oui |
|
IOleInPlaceFrame |
Oui |
|
IOleContainer |
Oui |
Voir la note 1 |
IDispatch pour les propriétés ambiantes |
Oui |
Voir la remarque 2 et propriétés ambiantes pour les contrôles |
Jeux d’événements de contrôle |
Oui |
Voir la remarque 2 |
ISimpleFrameSite |
Non |
ISimpleFrameSite et la prise en charge des frames simples imbriqués sont facultatifs. |
IPropertyNotifySink |
Non |
Uniquement nécessaire pour les conteneurs qui (a) ont leur propre interface utilisateur d’édition de propriétés qui nécessiterait une mise à jour chaque fois qu’un contrôle a modifié une propriété elle-même ou (b) souhaite contrôler les modifications de propriété [requestedit] et d’autres fonctionnalités de liaison de données de ce type. |
IErrorInfo |
Oui |
Obligatoire si le conteneur prend en charge les interfaces doubles. Voir la note 2. |
IClassFactory2 |
Non |
La prise en charge est fortement recommandée. |
- IOleContainer est implémenté sur l’objet document ou formulaire (ou analogue approprié) qui contient les sites de conteneur. Les contrôles utilisent IOleContainer pour accéder à d’autres contrôles dans le même document ou formulaire.
- La prise en charge des interfaces doubles n’est pas obligatoire, mais elle est fortement recommandée. L’écriture de conteneurs de contrôles ActiveX pour tirer parti des interfaces doubles offre de meilleures performances grâce aux contrôles qui offrent la prise en charge de la double interface.
Les conteneurs de contrôle ActiveX doivent prendre en charge les exceptions OLE Automation. Si un conteneur de contrôle prend en charge les interfaces doubles, il doit capturer les exceptions d’automatisation via IErrorInfo.