Condividi tramite


Allegare visualizzazioni ai dati dei documenti

Se si dispone di una nuova visualizzazione documento, potrebbe essere possibile allegarla a un oggetto dati documento esistente.

Per determinare se è possibile collegare una vista a un oggetto dati documento esistente

  1. Implementare CreateEditorInstance.

  2. Nell'implementazione di IVsEditorFactory::CreateEditorInstancechiamare QueryInterface sull'oggetto dati del documento esistente quando l'IDE chiama l'implementazione CreateEditorInstance .

    La chiamata QueryInterface consente di esaminare l'oggetto dati del documento esistente, specificato nel punkDocDataExisting parametro .

    Le interfacce esatte che è necessario eseguire una query, tuttavia, dipendono dall'editor che sta aprendo il documento, come descritto nel passaggio 4.

  3. Se non si trovano le interfacce appropriate nell'oggetto dati del documento esistente, restituire un codice di errore all'editor che indica che l'oggetto dati del documento non è compatibile con l'editor.

    Nell'implementazione dell'IDE di , una finestra di OpenStandardEditormessaggio notifica che il documento è aperto in un altro editor e chiede se si desidera chiuderlo.

  4. Se si chiude questo documento, Visual Studio chiama la factory dell'editor per una seconda volta. In questa chiamata, il DocDataExisting parametro è uguale a NULL. L'implementazione della factory dell'editor può quindi aprire l'oggetto dati del documento nel proprio editor.

    Nota

    Per determinare se è possibile usare un oggetto dati documento esistente, è anche possibile usare una conoscenza privata dell'implementazione dell'interfaccia eseguendo il cast di un puntatore alla classe Visual C++ effettiva dell'implementazione privata. Ad esempio, tutti gli editor standard implementano IVsPersistFileFormat, che eredita da IPersist. Pertanto, è possibile chiamare QueryInterface per GetClassIDe se l'ID classe nell'oggetto dati documento esistente corrisponde all'ID classe dell'implementazione, è possibile usare l'oggetto dati del documento.

Programmazione efficiente

Quando Visual Studio chiama l'implementazione del CreateEditorInstance metodo , restituisce un puntatore all'oggetto dati del documento esistente nel punkDocDataExisting parametro , se presente. Esaminare l'oggetto dati del documento restituito in punkDocDataExisting per determinare se l'oggetto dati del documento è appropriato per l'editor, come descritto nella nota nel passaggio 4 della procedura in questo argomento. Se appropriato, la factory dell'editor deve fornire una seconda visualizzazione per i dati, come descritto in Supportare più visualizzazioni documento. In caso contrario, verrà visualizzato un messaggio di errore appropriato.