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
Implementare CreateEditorInstance.
Nell'implementazione di
IVsEditorFactory::CreateEditorInstance
chiamareQueryInterface
sull'oggetto dati del documento esistente quando l'IDE chiama l'implementazioneCreateEditorInstance
.La chiamata
QueryInterface
consente di esaminare l'oggetto dati del documento esistente, specificato nelpunkDocDataExisting
parametro .Le interfacce esatte che è necessario eseguire una query, tuttavia, dipendono dall'editor che sta aprendo il documento, come descritto nel passaggio 4.
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.
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 chiamareQueryInterface
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.