Partager via


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

  1. Implémentez CreateEditorInstance.

  2. Dans votre implémentation, IVsEditorFactory::CreateEditorInstanceappelez QueryInterface l’objet de données de document existant lorsque l’IDE appelle votre CreateEditorInstance implémentation.

    L’appel QueryInterface vous permet d’examiner l’objet de données de document existant, qui est spécifié dans le punkDocDataExisting paramètre.

    Toutefois, les interfaces exactes que vous devez interroger dépendent de l’éditeur qui ouvre le document, comme indiqué à l’étape 4.

  3. 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.

  4. 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 appeler QueryInterface 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é.