Attacher des vues aux données de document
Si vous disposez d’une nouvelle vue de document, vous pouvez peut-être l’attacher à un objet de données de document existant.
Pour déterminer si vous pouvez attacher une vue à un objet de données de document existant
Implémentez CreateEditorInstance.
Dans votre implémentation,
IVsEditorFactory::CreateEditorInstance
appelezQueryInterface
l’objet de données de document existant lorsque l’IDE appelle votreCreateEditorInstance
implémentation.L’appel
QueryInterface
vous permet d’examiner l’objet de données de document existant, qui est spécifié dans lepunkDocDataExisting
paramètre.Toutefois, les interfaces exactes que vous devez interroger dépendent de l’éditeur qui ouvre le document, comme indiqué à l’étape 4.
Si vous ne trouvez pas les interfaces appropriées sur l’objet de données de document existant, retournez un code d’erreur à votre éditeur indiquant que l’objet de données de document n’est pas compatible avec votre éditeur.
Dans l’implémentation de l’IDE, une boîte de OpenStandardEditormessage vous informe que le document est ouvert dans un autre éditeur et vous demande si vous souhaitez le fermer.
Si vous fermez ce document, Visual Studio appelle votre fabrique d’éditeur pour une deuxième fois. Sur cet appel, le
DocDataExisting
paramètre est égal à NULL. L’implémentation de votre fabrique d’éditeur peut ensuite ouvrir l’objet de données de document dans votre propre éditeur.Remarque
Pour déterminer si vous pouvez utiliser un objet de données de document existant, vous pouvez également utiliser des connaissances privées de l’implémentation de l’interface en cas de conversion d’un pointeur vers la classe Visual C++ réelle de votre implémentation privée. Par exemple, tous les éditeurs standard implémentent
IVsPersistFileFormat
, qui héritent de IPersist. Par conséquent, vous pouvez appelerQueryInterface
GetClassID, et si l’ID de classe sur l’objet de données de document existant correspond à l’ID de classe de votre implémentation, vous pouvez utiliser l’objet de données de document.
Programmation fiable
Lorsque Visual Studio appelle votre implémentation de la CreateEditorInstance méthode, il renvoie un pointeur vers l’objet de données de document existant dans le punkDocDataExisting
paramètre, s’il en existe un. Examinez l’objet de données de document retourné pour punkDocDataExisting
déterminer si l’objet de données de document est approprié pour votre éditeur, comme indiqué dans la note de l’étape 4 de la procédure de cette rubrique. S’il est approprié, votre fabrique d’éditeur doit fournir une deuxième vue pour les données, comme indiqué dans Prise en charge de plusieurs vues de document. Si ce n’est pas le cas, il doit afficher un message d’erreur approprié.