Partager via


Conteneurs : fonctionnalités avancées

Cet article décrit les étapes nécessaires pour intégrer des fonctionnalités avancées optionnelles dans des applications de conteneur existantes. Ces fonctionnalités sont les suivantes :

Création d’une application conteneur/serveur

Une application conteneur/serveur est une application qui joue à la fois le rôle de conteneur et de serveur. Microsoft Word pour Windows en est un exemple. Vous pouvez inclure Word dans d'autres applications, vous pouvez également inclure des éléments dans Word pour les documents Windows. Le processus pour modifier votre application conteneur pour qu'elle soit à la fois un conteneur et un serveur complet (vous ne pouvez pas créer d'application combinaison conteneur/mini-serveur) est semblable au processus de création d'un serveur complet.

L’article Serveurs : Implémentation d’un serveur répertorie plusieurs tâches requises pour implémenter une application serveur. Si vous convertissez une application conteneur en une application conteneur/serveur, vous devrez effectuer certaines de ces mêmes tâches, en ajoutant du code au conteneur. Ce qui suit répertorie les éléments importants à prendre en compte :

  • Le code de conteneur créé par l'Assistant Application initialise déjà le sous-système OLE. Vous n'aurez pas besoin de modifier ni d'ajouter quoi que ce soit pour ce support.

  • Si l'emplacement de la classe de base d'une classe de document est COleDocument, remplacez la classe de base par COleServerDoc.

  • Remplacez COleClientItem::CanActivate pour éviter de modifier des éléments en place lorsque le serveur lui-même permet de modifier sur place.

    Par exemple, l’exemple OLE MFC OCLIENT a incorporé un élément créé par votre application conteneur/serveur. Ouvrez l'application OCLIENT et modifiez sur place l'élément créé par votre application conteneur/serveur. Lors de la modification de l’élément de votre application, vous décidez d’incorporer un élément créé par l’exemple OLE MFC HIERSVR. Pour cela, vous ne pouvez pas utiliser l'activation en place. Vous devez entièrement ouvrir HIERSVR pour activer cet élément. Comme la bibliothèque MFC ne prend pas en charge cette fonctionnalité OLE, remplacer COleClientItem::CanActivate vous permet de contrôler cette situation et d’empêcher une erreur d’exécution possible dans votre application.

Si vous créez une application et souhaitez qu'elle s'exécute en tant qu'application conteneur/serveur, choisissez l'option dans la boîte de dialogue Options OLE dans l'Assistant Application et la prise en charge est créée automatiquement. Pour plus d’informations, consultez l’article Vue d’ensemble : Création d’un conteneur de contrôle ActiveX. Pour plus d’informations sur les exemples MFC, consultez exemples MFC.

Notez que vous ne pouvez pas insérer une application MDI en elle-même. Une application qui est conteneur/serveur ne peut pas être insérée dans elle-même à moins d'être une application SDI.

Les liens vers la fonction d'objets incorporés permet à un utilisateur de créer un document avec un lien OLE vers un objet incorporé dans votre application conteneur. Par exemple, créez un document dans un traitement de texte contenant une feuille de calcul incorporée. Si votre application prend en charge les liens vers des objets incorporés, elle pourrait également coller un lien vers la feuille de calcul contenue dans le document de traitement de texte. Cette fonctionnalité permet à votre application d'utiliser les informations contenues dans la feuille de calcul sans savoir où le traitement de texte l'a initialement obtenue.

  1. Dérivez votre classe de document à partir de COleLinkingDoc au lieu de COleDocument.

  2. Créez un ID de classe OLE (CLSID) pour votre application à l’aide du générateur d’ID de classe inclus avec les outils de développement OLE.

  3. Enregistrez l'application avec OLE.

  4. Créez un objet COleTemplateServer en tant que membre de la classe d'application.

  5. Dans la fonction membre InitInstance de la classe d'application, procédez comme suit :

    • Connectez votre objet COleTemplateServer à vos modèles de document en appelant la fonction membre ConnectTemplate de l'objet.

    • Appelez la COleTemplateServer::RegisterAll fonction membre pour inscrire tous les objets de classe auprès du système OLE.

    • Appelez COleTemplateServer::UpdateRegistry. Le seul paramètre à UpdateRegistry OAT_CONTAINER si l’application n’est pas lancée avec le commutateur « /Embedded ». Cela enregistre l'application en tant que conteneur capable de prendre en charge les liens vers des objets incorporés.

      Si l’application est lancée avec le commutateur « /Embedded », elle ne doit pas afficher sa fenêtre principale, similaire à une application serveur.

L’exemple OCLIENT MFC implémente cette fonctionnalité. Pour obtenir un exemple de la façon dont cela est effectué, consultez la InitInstance fonction dans L’OCLIENT . Fichier CPP de cet exemple d’application.

Voir aussi

Containers
Serveurs