Partager via


Conteneurs : fonctionnalités avancées

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

Création d’une application conteneur/serveur

Une application conteneur/serveur est une application qui agit à la fois comme un conteneur et un serveur. Microsoft Word pour Windows est un exemple de ceci. Vous pouvez incorporer Word pour les documents Windows dans d’autres applications, et vous pouvez également incorporer des éléments dans des documents Word pour Windows. Le processus de modification de votre application conteneur pour être à la fois un conteneur et un serveur complet (vous ne pouvez pas créer une application de conteneur/miniserveur combiné) est similaire 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 application conteneur/serveur, vous devez effectuer certaines de ces mêmes tâches, en ajoutant du code au conteneur. Les éléments suivants répertorient 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 ou d’ajouter quoi que ce soit pour ce support.

  • Où que soit la classe de base d’une classe COleDocumentde document, remplacez la classe COleServerDocde base par .

  • Remplacez COleClientItem::CanActivate pour éviter la modification d’éléments en place pendant que le serveur lui-même est utilisé pour modifier en place.

    Par exemple, l’exemple OLE MFC OCLIENT a incorporé un élément créé par votre application conteneur/serveur. Vous ouvrez l’application OCLIENT et modifiez 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 ce faire, vous ne pouvez pas utiliser l’activation sur place. Vous devez ouvrir complètement HIERSVR pour activer cet élément. Étant donné que la bibliothèque de classes Microsoft Foundation ne prend pas en charge cette fonctionnalité OLE, la COleClientItem::CanActivate substitution vous permet de vérifier 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 fonctionne en tant qu’application conteneur/serveur, choisissez cette option dans la boîte de dialogue Options OLE de l’Assistant Application et cette prise en charge sera 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 un conteneur/serveur ne peut pas être insérée dans elle-même, sauf s’il s’agit d’une application SDI.

La fonctionnalité Liens vers les objets incorporés permet à un utilisateur de créer un document avec un lien OLE vers un objet incorporé à l’intérieur de 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 des liens vers des objets incorporés, elle peut coller un lien vers la feuille de calcul contenue dans le document du 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 obtenu à l’origine.

  1. Dérivez votre classe de document à partir de COleLinkingDoc la place 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. Inscrivez l’application auprès d’OLE.

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

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

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

    • 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 à UpdateRegistryOAT_CONTAINER si l’application n’est pas lancée avec le commutateur « /Embedded ». Cela inscrit l’application en tant que conteneur qui peut prendre en charge des 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

conteneurs
Serveurs