Anfügen von Ansichten an Dokumentdaten
Wenn Sie über eine neue Dokumentansicht verfügen, können Sie sie möglicherweise an ein vorhandenes Dokumentdatenobjekt anfügen.
So bestimmen Sie, ob Sie eine Ansicht an ein vorhandenes Dokumentdatenobjekt anfügen können
Implementieren Sie CreateEditorInstance.
Rufen Sie
QueryInterface
in Ihrer ImplementierungIVsEditorFactory::CreateEditorInstance
das vorhandene Dokumentdatenobjekt auf, wenn die IDE IhreCreateEditorInstance
Implementierung aufruft.Durch Aufrufen
QueryInterface
können Sie das vorhandene Dokumentdatenobjekt untersuchen, das impunkDocDataExisting
Parameter angegeben ist.Die genauen Schnittstellen, die Sie abfragen müssen, hängen jedoch vom Editor ab, der das Dokument öffnet, wie in Schritt 4 beschrieben.
Wenn Sie die entsprechenden Schnittstellen für das vorhandene Dokumentdatenobjekt nicht finden, geben Sie einen Fehlercode an Den Editor zurück, der angibt, dass das Dokumentdatenobjekt nicht mit Dem Editor kompatibel ist.
In der Implementierung OpenStandardEditorder IDE benachrichtigt Ein Meldungsfeld Sie darüber, dass das Dokument in einem anderen Editor geöffnet ist, und fragt Sie, ob Sie es schließen möchten.
Wenn Sie dieses Dokument schließen, ruft Visual Studio die Editor-Factory ein zweites Mal auf. Bei diesem Aufruf ist der
DocDataExisting
Parameter gleich NULL. Ihre Editor-Factoryimplementierung kann dann das Dokumentdatenobjekt in Ihrem eigenen Editor öffnen.Hinweis
Um festzustellen, ob Sie mit einem vorhandenen Dokumentdatenobjekt arbeiten können, können Sie auch private Kenntnisse der Schnittstellenimplementierung verwenden, indem Sie einen Zeiger auf die tatsächliche Visual C++-Klasse Ihrer privaten Implementierung umwandeln. Beispielsweise implementieren
IVsPersistFileFormat
alle Standard-Editoren , die von IPersist. Daher können Sie die Klassen-ID des vorhandenen Dokumentdatenobjekts aufrufenQueryInterface
GetClassIDund die Klassen-ID des vorhandenen Dokumentdatenobjekts mit der Klassen-ID Ihrer Implementierung übereinstimmen, dann können Sie mit dem Dokumentdatenobjekt arbeiten.
Stabile Programmierung
Wenn Visual Studio die Implementierung der CreateEditorInstance Methode aufruft, wird ein Zeiger an das vorhandene Dokumentdatenobjekt im punkDocDataExisting
Parameter übergeben, sofern vorhanden. Überprüfen Sie das zurückgegebene punkDocDataExisting
Dokumentdatenobjekt, um zu ermitteln, ob das Dokumentdatenobjekt für den Editor geeignet ist, wie in Schritt 4 des Verfahrens in diesem Thema beschrieben. Falls dies sinnvoll ist, sollte Ihre Editor-Factory eine zweite Ansicht für die Daten bereitstellen, wie in der Unterstützung mehrerer Dokumentansichten beschrieben. Wenn nicht, sollte eine entsprechende Fehlermeldung angezeigt werden.