Créer des concepteurs et éditeurs personnalisésCreate custom editors and designers

L’environnement de développement intégré (IDE) Visual Studio peut héberger différents types de l’éditeur :The Visual Studio integrated development environment (IDE) can host different types of editor:

  • L’éditeur principal de Visual StudioThe Visual Studio core editor

  • Éditeurs personnalisésCustom editors

  • Éditeurs externesExternal Editors

  • ConcepteursDesigners

    Les informations suivantes vous permettent de choisir le type d’éditeur que vous avez besoin.The following information helps you choose the type of editor you need.

Types de l’éditeurTypes of editor

Pour plus d’informations sur l’éditeur principal de Visual Studio, consultez étendre les services de l’éditeur et la langue.For information about the Visual Studio core editor, see Extend the editor and language services.

Éditeurs personnalisésCustom editors

Un éditeur personnalisé est celle qui est conçu pour fonctionner dans des circonstances particulières.A custom editor is one that is designed to work in specialized circumstances. Par exemple, vous pouvez créer un éditeur dont la fonction consiste à lire et écrire des données dans un référentiel spécifique, tel qu’un serveur Microsoft Exchange.For example, you might create an editor whose function is to read and write data to a specific repository, such as a Microsoft Exchange server. Choisissez un éditeur personnalisé si vous souhaitez un éditeur qui fonctionne avec votre type de projet uniquement ou si vous souhaitez un éditeur qui a uniquement quelques commandes spécifiques.Choose a custom editor if you want an editor that works with your project type only or if you want an editor that has only a few specific commands. Notez, cependant, que les utilisateurs ne seront pas en mesure d’utiliser un éditeur personnalisé pour modifier standard Visual StudioVisual Studio projets.Note, however, that users will not be able to use a custom editor to edit standard Visual StudioVisual Studio projects.

Un éditeur personnalisé peut utiliser une fabrique d’éditeur et ajouter des informations sur l’éditeur dans le Registre.A custom editor can use an editor factory and add information about the editor to the registry. Toutefois, le type de projet associé à l’éditeur personnalisé peut instancier l’éditeur personnalisé par d’autres moyens.However, the project type associated with the custom editor can instantiate the custom editor in other ways.

Un éditeur personnalisé peut utiliser l’activation sur place ou l’incorporation simplifiée pour implémenter une vue.A custom editor can use either in-place activation or simplified embedding to implement a view.

Éditeurs externesExternal editors

Éditeurs externes sont des éditeurs qui ne sont pas intégrés à Visual Studio, tels que Microsoft Word, le bloc-notes ou Microsoft FrontPage.External editors are editors that are not integrated into Visual Studio, such as Microsoft Word, Notepad, or Microsoft FrontPage. Vous pouvez appeler un éditeur de ce type si, par exemple, vous sont texte en lui passant à partir de votre VSPackage.You might call such an editor if, for example, you are passing text to it from your VSPackage. Éditeurs externes s’enregistrent et peuvent être utilisées en dehors de Visual Studio.External editors register themselves and can be used outside Visual Studio. Lorsque vous appelez un éditeur externe, et elle peut être incorporée dans une fenêtre hôte, il apparaît dans une fenêtre dans l’IDE.When you call an external editor, and it can be embedded in a host window, then it appears in a window in the IDE. Si ce n’est pas le cas, l’IDE crée ensuite une fenêtre distincte pour elle.If not, then the IDE creates a separate window for it.

Le IsDocumentInProject méthode définit la priorité du document à l’aide de la VSDOCUMENTPRIORITY énumération.The IsDocumentInProject method sets the document priority by using the VSDOCUMENTPRIORITY enumeration. Si le DP_External valeur est spécifiée, le fichier peut être ouvert par un éditeur externe.If the DP_External value is specified, the file can be opened by an external editor.

Décisions de conception de l’éditeurEditor design decisions

Les questions de conception suivantes vous aideront à choisir le type de l’éditeur de meilleures adapté à votre application :The following design questions will help you to choose the type of editor best suited to your application:

  • Votre application enregistrera ses données dans des fichiers ou pas ?Will your application save its data in files or not? Si elle enregistrera ses données dans les fichiers, ils seront dans un format standard ou personnalisé ?If it will save its data in files, will they be in a custom or standard format?

    Si vous utilisez un format de fichier standard, les autres types de projet en plus de votre projet sera capable d’ouvrir et lire/écrire des données leur.If you use a standard file format, other project types in addition to your project will be able to open and read/write data to them. Toutefois, si vous utilisez un format de fichier personnalisé, uniquement le type de votre projet sera capable d’ouvrir et lire/écrire des données leur.If you use a custom file format, however, only your project type will be able to open and read/write data to them.

    Si votre projet utilise des fichiers, vous devez personnaliser l’éditeur standard.If your project uses files, then you should customize the standard editor. Si votre projet n’utilise pas de fichiers, mais utilise plutôt des éléments dans une base de données ou autre référentiel, vous devez créer un éditeur personnalisé.If your project does not use files, but rather uses items in a database or other repository, then you should create a custom editor.

  • Votre éditeur n’a besoin pour héberger des contrôles ActiveX ?Does your editor need to host ActiveX controls?

    Si votre éditeur héberge des contrôles ActiveX, puis implémenter un éditeur d’activation sur place, comme indiqué dans In situ d’activation.If your editor hosts ActiveX controls, then implement an in-place activation editor, as outlined in In-place activation. Si elle n’héberge pas de contrôles ActiveX, puis utilisez un éditeur d’incorporation simplifié, ou personnaliser la Visual StudioVisual Studio éditeur par défaut.If it does not host ActiveX controls, then either use a simplified embedding editor, or customize the Visual StudioVisual Studio default editor.

  • Votre éditeur prendra en charge plusieurs vues ?Will your editor support multiple views? Si vous souhaitez que les vues de votre éditeur soient visibles en même temps que l’éditeur par défaut, vous devez prendre en charge plusieurs vues.You must support multiple views if you want views of your editor to be visible at the same time as the default editor.

    Si votre éditeur doit prendre en charge plusieurs vues, les données de document et les objets de vue de document pour l’éditeur doivent être des objets distincts.If your editor needs to support multiple views, the document data and document view objects for the editor must be separate objects. Pour plus d’informations, consultez prendre en charge plusieurs vues de document.For more information, see Support multiple document views.

    Si votre éditeur prend en charge plusieurs vues, vous prévoyez d’utiliser le Visual StudioVisual Studio implémentation de mémoire tampon de texte de l’éditeur de base (VsTextBuffer objet) pour votre objet de données de document ?If your editor supports multiple views, do you plan to use the Visual StudioVisual Studio core editor's text buffer implementation (VsTextBuffer object) for your document data object? Autrement dit, vous souhaitez prendre en charge de votre éditeur vue côte à côte avec la Visual StudioVisual Studio éditeur principal ?That is, do you want to support your editor view side-by-side with the Visual StudioVisual Studio core editor? La possibilité de procéder est la base du Concepteur de formulaires...The ability to do this is the basis of the forms designer..

  • Si vous avez besoin pour héberger un éditeur externe, l’éditeur incorporable dans Visual StudioVisual Studio?If you need to host an external editor , can the editor be embedded inside Visual StudioVisual Studio?

    Si elle peut être incorporée, vous devez créer une fenêtre hôte pour l’éditeur externe et appelez ensuite la IsDocumentInProject (méthode) et définissez le VSDOCUMENTPRIORITY valeur d’énumération à DP_External.If it can be embedded, you should create a host window for the external editor and then call the IsDocumentInProject method and set the VSDOCUMENTPRIORITY enumeration value to DP_External. Si l’éditeur ne peut pas être incorporé, l’IDE crée automatiquement une fenêtre distincte pour celui-ci.If the editor cannot be embedded, the IDE will automatically create a separate window for it.

Dans cette sectionIn This Section

Procédure pas à pas : Créer un éditeur personnaliséWalkthrough: Create a custom editor
Explique comment créer un éditeur personnalisé.Explains how to create a custom editor.

Procédure pas à pas : Ajout de fonctionnalités à un éditeur personnaliséWalkthrough: Add features to a custom editor
Explique comment ajouter des fonctionnalités à un éditeur personnalisé.Explains how to add features to a custom editor.

Configuration de l’initialisation et de métadonnées de concepteurDesigner initialization and metadata configuration
Explique comment initialiser un concepteur.Explains how to initialize a designer.

Annulation prise en charge pour les concepteursSupply undo support to designers
Explique comment fournir la prise en charge de l’annulation pour les concepteurs.Explains how to provide undo support for designers.

Couleurs de syntaxe dans les éditeurs personnalisésSyntax coloring in custom editors
Explique la différence entre les couleurs dans l’éditeur principal et dans les éditeurs personnalisés de syntaxe.Explains the difference between syntax coloring in the core editor and in custom editors.

Données de document et les vues de document dans les éditeurs personnalisésDocument data and document view in custom editors
Explique comment implémenter des données de documents et vues de document dans les éditeurs personnalisés.Explains how to implement document data and document views in custom editors.

Interfaces héritées dans l’éditeurLegacy interfaces in the editor
Explique comment accéder à l’éditeur principal au moyen de l’API héritée.Explains how to access the core editor by means of the legacy API.

Développer un service de langage héritéDevelop a legacy language service
Explique comment implémenter un service de langage.Explains how to implement a language service.

Étendre d’autres parties de Visual StudioExtend other parts of Visual Studio
Explique comment créer des éléments d’interface utilisateur qui correspondent au reste de Visual StudioVisual Studio.Explains how to create UI elements that match the rest of Visual StudioVisual Studio.

Voir aussiSee also

IVsEditorFactory