Déterminer l’éditeur qui ouvre un fichier dans un projet
Lorsqu’un utilisateur ouvre un fichier dans un projet, l’environnement passe par un processus d’interrogation, ouvrant finalement l’éditeur ou le concepteur approprié pour ce fichier. La procédure initiale utilisée par l’environnement est la même pour les éditeurs standard et personnalisés. L’environnement utilise divers critères lors de l’interrogation de l’éditeur à utiliser pour ouvrir un fichier et le VSPackage doit se coordonner avec l’environnement pendant ce processus.
Par exemple, lorsqu’un utilisateur sélectionne la commande Ouvrir dans le menu Fichier , puis choisit filename.rtf (ou tout autre fichier avec une extension .rtf ), l’environnement appelle l’implémentation IsDocumentInProject pour chaque projet, en parcourant finalement toutes les instances de projet dans la solution. Les projets retournent un ensemble d’indicateurs qui identifient les revendications sur un document par priorité. À l’aide de la priorité la plus élevée, l’environnement appelle la méthode appropriée OpenItem . Pour plus d’informations sur le processus d’interrogation, consultez Ajouter des modèles d’élément de projet et de projet.
Le projet Fichiers divers prétend tous les fichiers qui ne sont pas revendiqués par d’autres projets. De cette façon, les éditeurs personnalisés peuvent ouvrir des documents avant que les éditeurs standard ne les ouvrent. Si un projet Fichiers divers prétend un fichier, l’environnement appelle la OpenStandardEditor méthode pour ouvrir le fichier avec un éditeur standard. L’environnement case activée sa liste interne d’éditeurs inscrits pour un éditeur qui gère les fichiers .rtf. Cette liste se trouve dans le Registre à la clé suivante :
HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\<version>\Editors\<editor factory guid>\Extensions
L’environnement case activée également les identificateurs de classe dans la clé HKEY_CLASSES_ROOT\CLSID pour tous les objets qui ont une sous-clé DocObject. Si l’extension de fichier se trouve là, une version incorporée de l’application, telle que Microsoft Word, est créée sur place dans Visual Studio. Ces objets de document doivent être des fichiers composés qui implémentent l’interface IPersistStorage , ou l’objet doit implémenter l’interface IPersistFileFormat .
S’il n’existe aucune fabrique d’éditeur pour les fichiers .rtf dans le Registre, l’environnement recherche dans la clé HKEY_CLASSES_ROOT\.rtf et ouvre l’éditeur spécifié. Si l’extension de fichier est introuvable dans HKEY_CLASSES_ROOT, l’environnement utilise l’éditeur de texte principal Visual Studio pour ouvrir le fichier, s’il s’agit d’un fichier texte.
Si l’éditeur de texte principal échoue, ce qui se produit si le fichier n’est pas un fichier texte, l’environnement utilise son éditeur binaire pour le fichier.
Si l’environnement trouve un éditeur pour l’extension .rtf dans son Registre, il charge le VSPackage qui implémente cette fabrique d’éditeurs. L’environnement appelle la SetSite méthode sur le nouveau VSPackage. VsPackage appelle QueryService
SID_SVsRegistorEditor
, à l’aide de la RegisterEditor méthode pour inscrire la fabrique de l’éditeur auprès de l’environnement.
L’environnement re case activée sa liste interne d’éditeurs inscrits pour rechercher la fabrique d’éditeurs nouvellement inscrite pour les fichiers .rtf. L’environnement appelle votre implémentation de la CreateEditorInstance méthode, en passant le nom de fichier et le type d’affichage à créer.