Připojení zobrazení k datům dokumentu
Pokud máte nové zobrazení dokumentu, můžete ho připojit k existujícímu datovému objektu dokumentu.
Určení, jestli můžete připojit zobrazení k existujícímu datovému objektu dokumentu
Implementovat CreateEditorInstance.
Při implementaci volání
QueryInterface
existujícího datového objektu dokumentu při volání integrovaného vývojovéhoIVsEditorFactory::CreateEditorInstance
prostředí (IDE) implementaciCreateEditorInstance
.Volání
QueryInterface
umožňuje prozkoumat existující datový objekt dokumentu, který je zadán v parametrupunkDocDataExisting
.Přesná rozhraní, která musíte dotazovat, ale závisí na editoru, který dokument otevírá, jak je uvedeno v kroku 4.
Pokud nenajdete odpovídající rozhraní u existujícího datového objektu dokumentu, vraťte editoru kód chyby, který indikuje, že datový objekt dokumentu není kompatibilní s vaším editorem.
V implementaci integrovaného vývojového OpenStandardEditorprostředí (IDE) vás okno se zprávou upozorní, že je dokument otevřený v jiném editoru a zeptá se, jestli ho chcete zavřít.
Pokud tento dokument zavřete, visual Studio zavolá objekt pro vytváření editoru podruhé. Při tomto volání
DocDataExisting
je parametr roven hodnotě NULL. Implementace objektu pro vytváření editoru pak může otevřít datový objekt dokumentu ve vašem vlastním editoru.Poznámka:
Pokud chcete zjistit, zda můžete pracovat s existujícím datovým objektem dokumentu, můžete také použít soukromé znalosti implementace rozhraní přetypováním ukazatele na skutečnou třídu Visual C++ vaší privátní implementace. Například všechny standardní editory implementují
IVsPersistFileFormat
, který dědí z IPersist. Můžete tedy volatQueryInterface
GetClassIDa pokud ID třídy u existujícího datového objektu dokumentu odpovídá ID třídy vaší implementace, můžete pracovat s datovým objektem dokumentu.
Robustní programování
Když Visual Studio volá vaši implementaci CreateEditorInstance metody, předá zpět ukazatel na existující objekt dat dokumentu v parametru punkDocDataExisting
, pokud existuje. Prozkoumejte datový objekt dokumentu vrácený punkDocDataExisting
a zjistěte, jestli je datový objekt dokumentu vhodný pro váš editor, jak je popsáno v poznámce v kroku 4 postupu v tomto tématu. Pokud je to vhodné, měl by objekt pro vytváření editoru poskytnout druhé zobrazení dat, jak je uvedeno v části Podpora více zobrazení dokumentů. Pokud ne, měla by se zobrazit příslušná chybová zpráva.