Podpora více zobrazení dokumentů
Více než jedno zobrazení dokumentu můžete poskytnout vytvořením samostatných dat dokumentu a objektů zobrazení dokumentů pro váš editor. Některé případy, kdy by bylo užitečné další zobrazení dokumentu, jsou:
Podpora nového okna: Chcete, aby váš editor poskytoval dvě nebo více zobrazení stejného typu, aby uživatel, který už má v editoru otevřené okno, mohl otevřít nové okno výběrem příkazu Nové okno z nabídky Okno .
Podpora zobrazení formulářů a kódu: Chcete, aby editor poskytoval zobrazení různých typů. Visual Basic například poskytuje zobrazení formuláře i zobrazení kódu.
Další informace o tom najdete v postupu CreateEditorInstance v souboru EditorFactory.cs v projektu vlastního editoru vytvořeného šablonou balíčku sady Visual Studio. Další informace o tomto projektu naleznete v části Návod: Vytvoření vlastního editoru.
Synchronizace zobrazení
Při implementaci více zobrazení je datový objekt dokumentu zodpovědný za zachování všech zobrazení synchronizovaných s daty. Rozhraní pro zpracování událostí můžete použít k synchronizaci více zobrazení s daty VsTextBuffer .
Pokud objekt nepoužíváte VsTextBuffer k synchronizaci více zobrazení, musíte implementovat vlastní systém událostí pro zpracování změn provedených v datovém objektu dokumentu. K udržování více zobrazení v aktualizovaném stavu můžete použít různé úrovně členitosti. Při nastavování maximální členitosti se při psaní v jednom zobrazení okamžitě aktualizují ostatní zobrazení. S minimální členitostí se ostatní zobrazení neaktualizují, dokud se neaktivují.
Určení, zda jsou již otevřená data dokumentu
Spuštěná tabulka dokumentů (RDT) v integrovaném vývojovém prostředí (IDE) pomáhá sledovat, jestli už jsou data dokumentu otevřená, jak je znázorněno v následujícím diagramu.
Více zobrazení
Ve výchozím nastavení je každé zobrazení (objekt zobrazení dokumentu) obsaženo ve vlastním rámečku okna (IVsWindowFrame). Jak už jsme si ale poznamenali, data dokumentu se dají zobrazit v několika zobrazeních. Pokud to chcete povolit, Visual Studio zkontroluje RDT a určí, jestli je daný dokument už otevřený v editoru. Když integrované vývojové prostředí (IDE) volá CreateEditorInstance k vytvoření editoru, hodnota bez hodnoty NULL vrácená v parametru punkDocDataExisting
indikuje, že dokument je již otevřen v jiném editoru. Další informace o fungování RDT naleznete v tématu Spuštění tabulky dokumentů.
V implementaci prozkoumejte IVsEditorFactory datový objekt dokumentu vrácený punkDocDataExisting
a určete, zda jsou data dokumentu vhodná pro váš editor. (Například editor HTML by měl zobrazit jenom data HTML.) Pokud je to vhodné, měl by objekt pro vytváření editoru poskytnout druhé zobrazení dat. punkDocDataExisting
Pokud parametr není NULL
, je možné, že datový objekt dokumentu je otevřený v jiném editoru, nebo je pravděpodobnější, že data dokumentu jsou již otevřena v jiném zobrazení se stejným editorem. Pokud jsou data dokumentu otevřená v jiném editoru, který vaše továrna editoru nepodporuje, visual Studio neotevře objekt pro vytváření editoru. Další informace naleznete v tématu Postupy: Připojení zobrazení k datům dokumentu.