Partager via


Procédure pas à pas : exposition d'un modèle de plug-in .NET

Cette procédure pas à pas montre comment étendre l'exemple Scribble MFC classique pour prendre en charge un modèle de plug-in à l'aide de technologies .NET.

La solution Scribble MFC est étendue pour exposer un modèle objet .NET. En outre, l'exemple expose également une architecture de plug-in qui permet aux plug-ins .NET d'interagir de façon transparente avec la solution Scribble MFC.

Composants requis

ScribbleDotNET, exemple : extension du programme Scribble avec les fonctionnalités CLR

Pour générer et exécuter cet exemple

  1. Ouvrez le fichier solution Scribble.sln dans l'environnement de développement Visual Studio.

  2. Générez la solution en utilisant la configuration Debug ou Release.

  3. Dans l'Explorateur de solutions, ouvrez les éléments de solution plugins.xml.

  4. Dans le fichier plugins.xml, modifiez la première partie du chemin d'accès dans l'élément Assembly pour qu'elle corresponde à la configuration que vous avez utilisée pour la génération. Par exemple, remplacez « VBShapes.dll » par « Debug\VBShapes.dll » et remplacez « CSPenColor.dll » par « Debug\CSPenColor.dll » si vous avez généré à l'aide de la configuration Debug.

  5. Exécutez le fichier exécutable généré.

  6. Sélectionnez Plug-ins dans la barre de menus.

    1. Sélectionnez l'élément de menu Dessiner des formes. Cette opération permet d'exécuter le plug-in VBShapes qui dessine trois plans de carrés colorés différents.
  7. Sélectionnez Plug-ins dans la barre de menus.

    1. Sélectionnez l'élément de menu Changer la couleur de stylet. Cette opération permet d'exécuter le plug-in CSPenColor avec lequel vous pouvez sélectionner la couleur du stylet via une boîte de dialogue de couleurs .NET.

Fonctionnement

Cet exemple est implémenté en deux grandes parties :

  1. Exposition d'un modèle objet à utiliser par les writers de plug-in

    Deux interfaces principales sont exposées pour implémenter le modèle de plug-in (consultez le projet ScribbleApp pour obtenir les définitions de ces interfaces) :

    • IScribbleApp- cette interface expose un jeu des fonctionnalités qui permettent au writer de plug-in d'interagir avec une application Scribble en cours d'exécution. L'interface est implémentée par Scribble (consultez ScribbleApp.cpp dans le projet Scribble) et une instance de l'interface implémentée est passée à la fonction membre Run() de IScribblePlugin, (dont il est question après).

    • IScribblePlugin – cette interface est implémentée par le writer de plug-in. Le writer de plug-in utilise les fonctionnalités exposées par IScribbleApp pour implémenter leur plug-in.

  2. Extension de l'application Scribble de base pour rechercher, charger et exécuter les plug-ins

    • En premier lieu, un fichier XML contenant une liste de plug-ins à charger est analysé. Chaque plug-in recherché est chargé et vérifié pour être du type correct à l'aide de System.Reflection. Nous utilisons plus particulièrement la réflexion pour examiner les types exposés par le module de plug-in et garantir que l'un d'eux implémente l'interface IPlugin que nous avons exposée. L'implémentation correspondante se trouve dans PluginBld.cpp dans le projet Scribble.

    • CScribbleApp utilise ensuite les routines implémentées dans PluginBld.cpp pour obtenir une liste de tous les plug-ins découverts. Pour chaque plug-in figurant dans cette liste, un élément de menu est créé de façon dynamique sous le menu Plugins. Lorsque l'utilisateur sélectionne un élément de menu dans Plugins, le plug-in approprié est exécuté.

Technologies utilisées

  • Utilisation de XML pour spécifier l'emplacement des plug-ins

  • Utilisation de la réflexion pour vérifier que le plug-in spécifié dans le fichier XML est du type approprié

  • Définition d'un modèle objet pour créer des plug-ins

  • Chargement et exécution du plug-in dans une application C++

Voir aussi

Tâches

SCRIBBLE Sample: MFC MDI Drawing Application