Partager via


Implémentation de l'activation sur place

L’activation sur place permet l'interaction d'un utilisateur avec un objet incorporé sans quitter le document conteneur. Lorsqu’un utilisateur active l’objet, une barre de menus composite comprenant des éléments des barres de menus de l’application conteneur et des barres de menus de l’application serveur remplace la barre de menus principale du conteneur. L'utilisateur à ainsi accès aux commandes et fonctionnalités des deux applications, y compris l’aide contextuelle pour l’objet actif. Lorsqu’un utilisateur commence à travailler avec une partie non-objet du document, l’objet est désactivé, ce qui entraîne le remplacement du menu composite par le menu d’origine du document conteneur.

Cette fonctionnalité était initialement connue en tant que modification sur place. Le nom a été modifié, car la modification n’est qu’une façon pour un utilisateur d’interagir avec un objet en cours d’exécution. Par exemple, les clips sonores peuvent être écoutés au lieu d’être modifiés. Les clips vidéo peuvent être vus au lieu d’être modifiés. L’activation sur place est particulièrement appropriée dans le cas de clips vidéo, car elle leur permet de s’exécuter sur place, sans faire apparaître une fenêtre distincte. Cela pourrait s'avérer essentiel si la vidéo devait être vue, par exemple, conjointement avec les données de texte adjacentes dans le document conteneur.

L’implémentation de l’activation sur place est strictement facultative pour les applications conteneur et serveur. OLE prend toujours en charge le modèle dans lequel l’activation d’un objet entraîne l’ouverture d’une fenêtre distincte par l’application serveur. Les objets liés s’ouvrent toujours dans une fenêtre distincte pour souligner qu’ils résident dans un document distinct.

L’activation sur place commence par l’objet en réponse à un appel IOleObject::DoVerb à partir de son conteneur. Cet appel se produit généralement en réponse au double-clic d'un utilisateur sur l’objet ou à la sélection d'une commande (verbe) dans le menu « Modifier » de l’application conteneur.

La fenêtre sur place reçoit l'entrée du clavier et de la souris pendant que l’objet incorporé est actif. Lorsqu’un utilisateur sélectionne des commandes dans la barre de menus composite, la commande et les messages de menu associés sont envoyés à l'application conteneur ou objet, en fonction du menu déroulant sélectionné. Les entrées par le biais de règles, de barres d’outils ou d’ornements d’images d’un objet accèdent directement à l’objet incorporé qui possède ces fenêtres.

Un objet incorporé activé sur place reste actif jusqu’à ce que le conteneur le désactive en réponse à l’entrée utilisateur ou que l’objet abandonne volontairement l’état actif, comme peut le faire un clip vidéo, par exemple. Un utilisateur peut désactiver un objet en cliquant à l’intérieur du document conteneur, mais en dehors de la fenêtre d’activation sur place de l’objet, ou simplement en cliquant sur un autre objet. Toutefois, un objet activé sur place reste actif si l’utilisateur clique sur la barre de titre du conteneur, la barre de défilement ou, en particulier, la barre de menus.

Vous pouvez implémenter un serveur d'objets d'activation sur place en tant que serveur in-process (DLL) ou un serveur local (EXE). Dans les deux cas, la barre de menus composite contient des éléments (généralement des menus déroulants) à partir des processus serveur et conteneur. Dans le cas d’un serveur in-process, la fenêtre d’activation sur place est simplement une autre fenêtre enfant dans la hiérarchie de fenêtres du conteneur, recevant son entrée par le biais de la pompe de messages de l’application conteneur.

Dans le cas d’un serveur local, la fenêtre d’activation sur place appartient au processus d’application serveur de l’objet incorporé, mais sa fenêtre parente appartient au conteneur. L’entrée de la fenêtre d’activation sur place s’affiche dans la file d’attente de messages du serveur et est distribuée par la boucle de message du serveur. Les bibliothèques OLE sont chargées de veiller à la bonne distribution des commandes de menus et des messages.

Documents composés