Détermination pour ouvrir l’éditeur à un fichier dans un projetDetermining 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, par la suite ouvrir l’éditeur approprié ou du 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 une grande variété de 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 ouvrir commande à partir de la fichier menu et choisit ensuite filename.rtf (ou tout autre fichier avec une extension .rtf), l’environnement appelle le IsDocumentInProject implémentation pour chaque projet, éventuellement 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, Ajout d’un projet et modèles d’élément de projet.For further information on the polling process, Adding Project and Project Item Templates.

Le projet fichiers divers revendications tous les fichiers qui ne sont pas demandés par d’autres projets.The Miscellaneous Files project claims all files that are not claimed by other projects. De cette manière, les éditeurs personnalisés peuvent ouvrir des documents avant d’ouvrir les éditeurs standards.This way, custom editors can open documents before standard editors open them. Si un projet fichiers divers déclare 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 inscrits pour un objet qui gère les fichiers .rtf.The environment checks its internal list of registered editors for one that handles .rtf files. Cette liste se trouve dans le Registre à la clé suivante :This list is located in the registry at the following key:

[HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\<version> \Editors\{<editor factory guid>} \Extensions][HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\<version>\Editors\{<editor factory guid>}\Extensions]

L’environnement vérifie également les identificateurs de classe dans la clé HKEY_CLASSES_ROOT\CLSID 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 sub-key DocObject. Si l’extension de fichier est trouvée, une version incorporée de l’application, telles 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 la IPersistStorage interface, soit 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 les fichiers .rtf dans le Registre, puis l’environnement recherche dans le HKEY_CLASSES_ROOT \.rtf 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, 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 trouve un éditeur pour l’extension .rtf 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 VSPackage QueryService pour SID_SVsRegistorEditor, à l’aide du 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 maintenant vérifie à nouveau sa liste interne des éditeurs pour trouver la fabrique d’éditeur qui vient d’être inscrit pour les fichiers .rtf.The environment now re-checks 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 la vue 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