Déterminer quel éditeur ouvre un fichier dans un projetDetermine which editor opens a file in a project

Lorsqu’un utilisateur ouvre un fichier dans un projet, l’environnement passe par un processus d’interrogation, finalement ouvrir l’éditeur approprié ou le concepteur pour ce fichier.When a user opens a file in a project, the environment goes through a polling process, eventually opening the appropriate editor or designer for that file. La procédure initiale employée par l’environnement est identique pour les éditeurs standard et personnalisées.The initial procedure employed by the environment is the same for both standard and custom editors. L’environnement utilise divers critères lors de l’interrogation de l’éditeur à utiliser pour ouvrir un fichier et le VSPackage doit coordonner avec l’environnement pendant ce processus.The environment uses a variety of criteria when polling which editor to use to open a file and the VSPackage must coordinate with the environment during this process.

Par exemple, lorsqu’un utilisateur sélectionne le Open commande à partir de la fichier menu et choisit ensuite filename.rtf (ou tout autre fichier avec un .rtfextension), l’environnement appelle le IsDocumentInProject implémentation pour chaque projet, mais finit par parcourir toutes les instances de projet dans la solution.For example, when a user selects the Open command from the File menu, and then chooses filename.rtf (or any other file with a .rtf extension), the environment calls the IsDocumentInProject implementation for each project, eventually cycling through all project instances in the solution. Projets de retournent un jeu d’indicateurs qui identifient les revendications sur un document par priorité.Projects return a set of flags that identify claims on a document by priority. À l’aide de la priorité la plus élevée, l’environnement appelle approprié OpenItem (méthode).Using the highest priority, the environment calls the appropriate OpenItem method. Pour plus d’informations sur le processus d’interrogation, consultez ajouter le projet et les modèles d’élément de projet.For more information on the polling process, see Add project and project item templates.

Le projet fichiers divers de revendications de tous les fichiers qui ne sont pas demandées par d’autres projets.The Miscellaneous Files project claims all files that are not claimed by other projects. De cette façon, les éditeurs personnalisés peuvent ouvrir des documents avant de les ouvrir des éditeurs standard.This way, custom editors can open documents before standard editors open them. Si un projet fichiers divers revendique un fichier, l’environnement appelle le OpenStandardEditor méthode pour ouvrir le fichier avec un éditeur standard.If a Miscellaneous Files project claims a file, the environment calls the OpenStandardEditor method to open the file with a standard editor. L’environnement vérifie sa liste interne des éditeurs enregistrés pour l’une qui gère .rtf fichiers.The environment checks its internal list of registered editors for one that handles .rtf files. Cette liste se trouve dans le Registre au niveau de la clé suivante :This list is located in the registry at the following key:

HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\<version > \Editors\<guid de fabrique d’éditeur > \ExtensionsHKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\<version>\Editors\<editor factory guid>\Extensions

L’environnement vérifie également les identificateurs de classe le HKEY_CLASSES_ROOT\CLSID clés pour tous les objets qui ont une sous-clé DocObject.The environment also checks the class identifiers in the HKEY_CLASSES_ROOT\CLSID key for any objects that have a subkey DocObject. Si l’extension de fichier s’y trouve, une version incorporée de l’application, tel que Microsoft Word, est créée sur place dans Visual Studio.If the file extension is found there, an embedded version of the application, such as Microsoft Word, is created in-place in Visual Studio. Ces objets de document doivent être des fichiers composés qui implémentent le IPersistStorage interface ou l’objet doit implémenter le IPersistFileFormat interface.These document objects must be compound files that implement the IPersistStorage interface, or the object must implement the IPersistFileFormat interface.

S’il n’existe aucune fabrique d’éditeur pour .rtf des fichiers dans le Registre, puis l’environnement de recherche les HKEY_CLASSES_ROOT\.rtf de clé et ouvre l’éditeur spécifié.If there is no editor factory for .rtf files in the registry, then the environment looks in the HKEY_CLASSES_ROOT\.rtf key and opens the editor specified there. Si l’extension de fichier est introuvable dans HKEY_CLASSES_ROOT, puis l’environnement utilise l’éditeur de texte Visual Studio core pour ouvrir le fichier, s’il s’agit d’un fichier texte.If the file extension is not found in HKEY_CLASSES_ROOT, then the environment uses the Visual Studio core text editor to open the file, if it is a text file.

Si l’éditeur de texte principal échoue, ce qui se produit que si le fichier n’est pas un fichier texte, l’environnement utilise son éditeur binaire pour le fichier.If the core text editor fails, which occurs if the file is not a text file, then the environment uses its binary editor for the file.

Si l’environnement ne trouve pas un éditeur pour le .rtf extension dans son Registre, il charge le VSPackage qui implémente cette fabrique d’éditeur.If the environment does find an editor for the .rtf extension in its registry, it loads the VSPackage that implements this editor factory. L’environnement appelle le SetSite méthode sur le nouveau VSPackage s’affiche.The environment calls the SetSite method on the new VSPackage. Les appels de VSPackage QueryService pour SID_SVsRegistorEditor, en utilisant le RegisterEditor méthode pour inscrire la fabrique d’éditeur avec l’environnement.The VSPackage calls QueryService for SID_SVsRegistorEditor, using the RegisterEditor method to register the editor factory with the environment.

L’environnement est maintenant sa liste interne des éditeurs enregistrés pour trouver la fabrique d’éditeur qui vient d’être inscrit pour .rtf fichiers.The environment now rechecks its internal list of registered editors to find the newly registered editor factory for .rtf files. L’environnement appelle votre implémentation de la CreateEditorInstance méthode, en passant le type de nom et le mode de fichier à créer.The environment calls your implementation of the CreateEditorInstance method, passing in the file name and view type to create.

Voir aussiSee also

IPersistFileFormat
IPersistStorage
SetSite
IsDocumentInProject
OpenItem
OpenStandardEditor