Compartir a través de


Adjuntar vistas a los datos del documento

Si tiene una nueva vista de documento, puede adjuntarla a un objeto de datos de documento existente.

Para determinar si puede adjuntar una vista a un objeto de datos de documento existente

  1. Implemente CreateEditorInstance.

  2. En la implementación de , llame al QueryInterface objeto de IVsEditorFactory::CreateEditorInstancedatos del documento existente cuando el IDE llame a la CreateEditorInstance implementación.

    La llamada QueryInterface permite examinar el objeto de datos del documento existente, que se especifica en el punkDocDataExisting parámetro .

    Sin embargo, las interfaces exactas que debe consultar dependen del editor que abra el documento, como se describe en el paso 4.

  3. Si no encuentra las interfaces adecuadas en el objeto de datos de documento existente, devuelva un código de error al editor que indique que el objeto de datos del documento no es compatible con el editor.

    En la implementación del IDE de OpenStandardEditor, un cuadro de mensaje le notifica que el documento está abierto en otro editor y le pregunta si desea cerrarlo.

  4. Si cierra este documento, Visual Studio llama a la factoría del editor por segunda vez. En esta llamada, el DocDataExisting parámetro es igual a NULL. Después, la implementación del generador de editores puede abrir el objeto de datos del documento en su propio editor.

    Nota:

    Para determinar si puede trabajar con un objeto de datos de documento existente, también puede usar el conocimiento privado de la implementación de la interfaz mediante la conversión de un puntero a la clase real de Visual C++ de la implementación privada. Por ejemplo, todos los editores estándar implementan IVsPersistFileFormat, que hereda de IPersist. Por lo tanto, puede llamar QueryInterface a para GetClassIDy si el identificador de clase del objeto de datos de documento existente coincide con el identificador de clase de la implementación, puede trabajar con el objeto de datos del documento.

Programación sólida

Cuando Visual Studio llama a la implementación del CreateEditorInstance método , pasa un puntero al objeto de datos de documento existente en el punkDocDataExisting parámetro , si existe uno. Examine el objeto de datos del documento devuelto en punkDocDataExisting para determinar si el objeto de datos del documento es adecuado para el editor, tal como se describe en la nota del paso 4 del procedimiento de este tema. Si es adecuado, el generador de editores debe proporcionar una segunda vista para los datos, tal y como se describe en Compatibilidad con varias vistas de documento. Si no es así, debe mostrar un mensaje de error adecuado.