Déterminer quel éditeur ouvrir un fichier dans un projet
Lorsqu'un utilisateur ouvre un fichier dans un projet, l'environnement passe à l'aide d'un processus d'interrogation, par la suite ouvrant l'éditeur ou le concepteur approprié pour ce fichier. La première méthode utilisée par l'environnement est la même pour les éditeurs standard et personnalisés. L'environnement utilise diverses critères en interrogeant que l'éditeur à utiliser pour ouvrir un fichier et le VSPackage doit coordonner avec l'environnement pendant ce processus.
Choisit par exemple, lorsqu'un utilisateur sélectionne la commande d' Ouvrir dans le menu de Fichier , puis filename.rtf (ou un fichier avec une extension .rtf), les appels d'environnement l'implémentation d' IsDocumentInProject pour chaque projet, défilant par la suite par toutes les instances de projet dans la solution. Les projets retournent un jeu d'indicateurs qui identifient les revendications sur un document par priorité. L'utilisation la plus élevée, l'environnement appelle la méthode appropriée d' OpenItem . pour plus d'informations sur le processus d'interrogation, Modèles de projets et d'éléments de projet à ajouter.
le projet Fichiers divers réclame tous les fichiers qui ne sont pas réclamés par d'autres projets. De cette façon, des éditeurs personnalisés peuvent répercuter les documents ouverts avant que les éditeurs standard les ouvert. si un projet Fichiers divers réclame un fichier, l'environnement appelle la méthode d' OpenStandardEditor pour ouvrir le fichier avec un éditeur standard. L'environnement vérifie sa liste interne d'éditeurs enregistrés pour un qui traitent les fichiers .rtf. cette liste est située dans le Registre à la clé suivante :
[HKEY_LOCAL_MACHINE \Software\Microsoft\VisualStudio\<version> \Editors\{<GUID de fabrique d'éditeur>} \Extensions]
L'environnement active également les ID de classe dans le HKEY_CLASSES_ROOT \CLSID key for any objects that have a sub-key DocObject. Si l'extension de fichier se trouve là, une version incorporée de l'application, telle que Microsoft Word, est sur place créé dans Visual Studio. ces objets document doivent être des fichiers composés qui implémentent l'interface d' IPersistStorage , ou l'objet doit implémenter l'interface d' IPersistFileFormat .
S'il n'y a pas de fabrique d'éditeur pour les fichiers .rtf dans le Registre, l'environnement consulte la clé de HKEY_CLASSES_ROOT \ .rtf et ouvre l'éditeur spécifié existe. Si l'extension de fichier est introuvable dans HKEY_CLASSES_ROOT, l'environnement utilise l'éditeur de texte principal de Visual Studio pour ouvrir le fichier s'il s'agit d'un fichier texte.
Si l'éditeur principal de texte échoue, qui se produit si le fichier n'est pas un fichier texte, l'environnement utilise son éditeur binaire pour le fichier.
Si l'environnement recherche un éditeur permettant l'extension .rtf dans son Registre, il charge le VSPackage qui implémente cette fabrique d'éditeur. l'environnement appelle la méthode d' SetSite sur le nouveau VSPackage. Le VSPackage appelle QueryService pour SID_SVsRegistorEditor, à l'aide de la méthode d' RegisterEditor pour inscrire la fabrique d'éditeur avec l'environnement.
L'environnement revérifie maintenant sa liste interne d'éditeurs enregistrés pour rechercher la fabrique récemment enregistrée d'éditeur pour les fichiers .rtf. L'environnement appelle votre implémentation de la méthode de CreateEditorInstance , en passant le type de nom de fichier et de vue créer.