Comment : inscrire des types de fichiers de l’éditeurHow to: Register editor file types

Le moyen le plus simple pour inscrire les types de fichiers de l’éditeur est à l’aide des attributs d’inscription fournis dans le cadre de la Kit de développement logiciel Visual StudioVisual Studio SDK package framework (MPF) classes managées.The easiest way to register editor file types is by using the registration attributes provided as a part of the Kit de développement logiciel Visual StudioVisual Studio SDK managed package framework (MPF) classes. Si vous implémentez votre package en mode natif Visual C++Visual C++, vous pouvez également écrire un script de Registre qui inscrit votre éditeur et les extensions associées.If you are implementing your package in native Visual C++Visual C++, you can also write a registry script that registers your editor and the associated extensions.

Inscription à l’aide des classes MPFRegistration using MPF classes

Pour inscrire des types de fichiers de l’éditeur à l’aide des classes MPFTo register editor file types using MPF classes

  1. Fournir la ProvideEditorExtensionAttribute classe avec les paramètres appropriés pour votre éditeur dans la classe de votre VSPackage.Provide the ProvideEditorExtensionAttribute class with the appropriate parameters for your editor in the class of your VSPackage.

    [Microsoft.VisualStudio.Shell.ProvideEditorExtensionAttribute(typeof(EditorFactory), ".Sample", 32,
         ProjectGuid = "{A2FE74E1-B743-11d0-AE1A-00A0C90FFFC3}",
         TemplateDir = "..\\..\\Templates",
         NameResourceID = 106)]
    

    . Exemple est l’extension qui est inscrit pour cet éditeur, et « 32 » est son niveau de priorité.Where .Sample is the extension that is registered for this editor, and "32" is its priority level.

    Le projectGuid est le GUID pour les types de fichier divers, définis dans MiscellaneousFilesProject_guid.The projectGuid is the GUID for miscellaneous file types, defined in MiscellaneousFilesProject_guid. Le type de fichier divers est fourni, afin que le fichier résultant ne va pas faire partie du processus de génération.The miscellaneous file type is provided, so that the resulting file is not going to be a part of the build process.

    TemplateDir représente le dossier qui contient les fichiers de modèle qui sont inclus dans l’exemple d’éditeur de base managé.TemplateDir represents the folder that contains the template files that are included with the managed basic editor sample.

    NameResourceID est défini dans le Resources.h fichier du projet BasicEditorUI et identifie l’éditeur en tant que « Mes éditeur ».NameResourceID is defined in the Resources.h file of the BasicEditorUI project, and identifies the editor as "My Editor".

  2. Remplacez la méthode Initialize.Override the Initialize method.

    Dans votre implémentation de la Initialize méthode, appelez le RegisterEditorFactory méthode et passe l’instance de votre fabrique d’éditeur comme illustré ci-dessous.In your implementation of the Initialize method, call the RegisterEditorFactory method and pass the instance of your editor factory as demonstrated below.

    protected override void Initialize()
    {
        Trace.WriteLine (string.Format(CultureInfo.CurrentCulture,
        "Entering Initialize() of: {0}", this.ToString()));
        base.Initialize();
           //Create Editor Factory
        editorFactory = new EditorFactory(this);
        base.RegisterEditorFactory(editorFactory);
    }
    

    Cette étape inscrit la fabrique d’éditeur et les extensions de fichier de l’éditeur.This step registers both the editor factory and the editor file extensions.

  3. Annuler l’inscription de fabriques d’éditeur.Unregister the editor factories.

    Fabriques d’éditeur sont automatiquement annulées lorsque le VSPackage est supprimé.Editor factories are automatically unregistered when the VSPackage is disposed. Si l’objet de fabrique d’éditeur implémente le IDisposable interface, son Dispose méthode est appelée une fois la fabrique a été annulée avec Visual StudioVisual Studio.If the editor factory object implements the IDisposable interface, its Dispose method is called after the factory has been unregistered with Visual StudioVisual Studio.

Inscription à l’aide d’un script de RegistreRegistration using a registry script

L’inscription des types de fichiers et les fabriques d’éditeur en mode natif Visual C++Visual C++ s’effectue à l’aide d’un script de Registre à écrire dans le Registre windows, comme illustré ci-après.Registering editor factories and file types in native Visual C++Visual C++ is done using a registry script to write to the windows registry, as illustrated by the following.

Pour inscrire des types de fichiers de l’éditeur à l’aide d’un script de RegistreTo register editor file types using a registry script

  1. Dans votre script de Registre, définissez la fabrique d’éditeur et de la fabrique d’éditeur chaîne GUID comme indiqué dans la GUID_BscEditorFactory section du script de Registre suivant.In your registry script, define the editor factory and the editor factory GUID string as shown in the GUID_BscEditorFactory section of the following registry script. En outre, définissez l’extension et la priorité de l’extension de l’éditeur :Also, define the extension and the priority of the editor extension:

          NoRemove Editors     {         %GUID_BscEditorFactory% = s 'RTF Editor'         {             val Package = s '%CLSID_Package%'             val DisplayName = s 'An RTF Editor'             val ExcludeDefTextEditor = d 1             val AcceptBinaryFiles = d 0
    
            LogicalViews
            {
                val %LOGVIEWID_TextView% = s ''
            }
    
            OpenWithEntries
            {
            }
    
            Extensions            {                val rtf = d 50            }
        }
    }
    

    L’extension de fichier de l’éditeur dans cet exemple est identifiée en tant que .rtf et sa priorité est « 50 ».The editor file extension in this example is identified as .rtf and its priority is "50". Les chaînes GUID sont définies dans Resource.h fichier de l’exemple de projet BscEdit.The GUID strings are defined in Resource.h file of the BscEdit sample project.

  2. Inscrivez le VSPackage.Register the VSPackage.

  3. Inscrire la fabrique d’éditeur.Register the editor factory.

    La fabrique d’éditeur est inscrit dans le RegisterEditor implémentation.The editor factory is registered in the RegisterEditor implementation.

    // create editor factory.
    if (m_srpEdFact == NULL)
    {
        CComObject<CBscEditorFactory> *pEdFact = new CComObject<CBscEditorFactory>;
        if (NULL == pEdFact)
          return E_OUTOFMEMORY;
    
        if (!pEdFact->FInit(this))
          return E_UNEXPECTED;
    
        m_srpEdFact = (IVsEditorFactory *) pEdFact;    // Note: assignment to a smart pointer does an AddRef()
    }
    // Query service for IVsRegisterEditors, register the editor factory
    CComPtr<IVsRegisterEditors> srpRegEd;
    if ((SUCCEEDED(m_srpPkgSiteSP->QueryService(SID_SVsRegisterEditors, IID_IVsRegisterEditors,(void **)&srpRegEd ))) && (srpRegEd != NULL))
      {
        ATLTRACE(TEXT(">> CVsPackage, registering editor factory.\n"));
          if (FAILED(srpRegEd->RegisterEditor(GUID_BscEditorFactory,
                      m_srpEdFact, &m_dwEditorCookie)))
          {
             ATLTRACE(TEXT(">> CVsPackage, RegisterEditor() failed.\n"));
            return E_FAIL;
          }
      }
        return S_OK;
    }
    

    Les chaînes GUID sont définies dans Resource.h fichier du projet BscEdit.The GUID strings are defined in Resource.h file of the BscEdit project.