Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
QueryInterfacein Ihrer ImplementierungIVsEditorFactory::CreateEditorInstancedas vorhandene Dokumentdatenobjekt auf, wenn die IDE IhreCreateEditorInstanceImplementierung aufruft.Durch Aufrufen
QueryInterfacekönnen Sie das vorhandene Dokumentdatenobjekt untersuchen, das impunkDocDataExistingParameter 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
DocDataExistingParameter 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
IVsPersistFileFormatalle Standard-Editoren , die von IPersist. Daher können Sie die Klassen-ID des vorhandenen Dokumentdatenobjekts aufrufenQueryInterfaceGetClassIDund 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.