Utilisation des fonctionnalités du conteneur
Les sections précédentes ont décrit certaines des prises en charge requises côté appelant qu’un contrôle ActiveX doit avoir pour accéder à certaines fonctionnalités de son conteneur. Le tableau suivant décrit l’utilisation par un contrôle des interfaces côté conteneur et le moment où une telle utilisation se produit.
Interface | Container, objet | Utilisation |
---|---|---|
IOleClientSite |
Site |
Les contrôles qui implémentent IOleObject appellent des méthodes IOleClientSite dans le cadre du protocole d’incorporation OLE standard, en particulier les méthodes SaveObject, ShowObject, OnShowWindow (uniquement si un état d’activation de fenêtre distincte est pris en charge), RequestNewObjectLayout et GetContainer (si la communication avec d’autres contrôles est souhaitée). La méthode GetMoniker n’est utilisée que lorsque le contrôle peut être lié à l’externe, c’est-à-dire que le contrôle n’est pas marqué avec OLEMISC_CANTLINKINSIDE. |
IOleInPlaceSite |
Site |
Les contrôles qui ont un état activé sur place et éventuellement un état actif de l’interface utilisateur appellent les méthodes IOleInPlaceSite (généralement toutes, à l’exception de ContextSensitiveHelp) dans le cadre du protocole d’activation sur place OLE standard. |
IAdviseSink |
Site |
Le contrôle appelle OnDataChange si le contrôle prend en charge IDataObject, OnViewChange si le contrôle prend en charge IViewObject2 et OnClose, OnSave et OnRename si le contrôle prend en charge IOleObject. |
IOleControlSite |
Site |
S’il est pris en charge, le contrôle appelle OnControlInfoChanged lorsque les éléments mnémoniques changent, LockInPlaceActive et TransformCoords si des événements sont déclenchés (cette dernière méthode est utilisée uniquement si les coordonnées sont transmises en tant qu’arguments d’événement), OnFocus et TranslateAccelerator si le contrôle a un état actif de l’interface utilisateur, et GetExtendedControl si le contrôle souhaite examiner les propriétés de contrôle étendu (appartenant au conteneur). |
IDispatch (propriétés ambiantes) |
Site |
Utilisé pour accéder aux propriétés ambiantes. |
IPropertyNotifySink |
Variable |
Un contrôle doit générer OnChanged et OnRequestEdit pour toutes les propriétés de contrôle qui sont marquées comme [bindable] et [request], respectivement. |
Autres interfaces de récepteur d’événements |
Variable |
Un contrôle qui a des interfaces sortantes autres que IPropertyNotifySink reçoit d’autres pointeurs d’interface de l’IID correct vers les implémentations IConnectionPoint::Advise du contrôle (qui se trouvent généralement dans les sous-objets du contrôle). Un contrôle sait toujours comment appeler ses propres interfaces d’événements, car le contrôle définit ces interfaces. |
IOleInPlaceFrame |
Frame |
Utilisé lorsqu’un contrôle a un état actif de l’interface utilisateur sur place qui nécessite des outils au niveau de l’image ou des éléments de menu. |
IOleInPlaceUIWindow |
Document |
Utilisé uniquement lorsqu’un contrôle a un état actif de l’interface utilisateur sur place qui nécessite des outils d’interface utilisateur au niveau du document ou du volet. Ceci est rare. |