Sdílet prostřednictvím


Spuštění tabulky dokumentů

Integrované vývojové prostředí udržuje seznam všech aktuálně otevřených dokumentů v interní struktuře označované jako spuštěná tabulka dokumentů (RDT). Tento seznam obsahuje všechny otevřené dokumenty v paměti bez ohledu na to, jestli se tyto dokumenty právě upravují. Dokument je libovolná položka, která je trvalá, včetně souborů v projektu nebo hlavního souboru projektu (například souboru .vcxproj).

Prvky spuštěné tabulky dokumentů

Tabulka spuštěných dokumentů obsahuje následující položky.

Element (Prvek) Popis
Moniker dokumentu Řetězec, který jednoznačně identifikuje datový objekt dokumentu. Toto by byla absolutní cesta k souboru systému projektu, který spravuje soubory (například C:\MyProject\MyFile). Tento řetězec se používá také pro projekty uložené v jiných úložištích než systémy souborů, jako jsou uložené procedury v databázi. V tomto případě může systém projektu vymyslet jedinečný řetězec, který dokáže rozpoznat a případně analyzovat a určit, jak dokument uložit.
Vlastník hierarchie Objekt hierarchie, který vlastní dokument, jak je reprezentováno rozhraním IVsHierarchy .
ID položky Identifikátor položky pro konkrétní položku v hierarchii. Tato hodnota je jedinečná mezi všemi dokumenty v hierarchii, která tento dokument vlastní, ale tato hodnota není zaručena jedinečná v různých hierarchiích.
Datový objekt dokumentu Minimálně se jedná o IUnknown

Objekt. Integrované vývojové prostředí (IDE) nevyžaduje žádné konkrétní rozhraní nad IUnknown rámec rozhraní pro datový objekt dokumentu vlastního editoru. V případě standardního editoru IVsPersistDocData2 je však implementace rozhraní editoru nutná ke zpracování volání trvalosti souborů z projektu. Další informace naleznete v tématu Uložení standardního dokumentu.
Příznaky Příznaky, které řídí, zda je dokument uložen, zda je použit zámek pro čtení nebo úpravy atd., lze zadat při přidání položek do RDT. Další informace naleznete v výčtu _VSRDTFLAGS .
Upravit počet zámků Počet zámků pro úpravy Zámek pro úpravy označuje, že některé editory mají otevřený dokument pro úpravy. Když počet zámků úprav přejde na nulu, zobrazí se uživateli výzva k uložení dokumentu, pokud byl změněn. Například při každém otevření dokumentu v editoru pomocí příkazu Nové okno se pro tento dokument v RDT přidá zámek úprav. Aby bylo možné nastavit zámek úprav, musí mít dokument hierarchii nebo ID položky.
Počet zámků pro čtení Počet zámků čtení Zámek pro čtení označuje, že dokument se čte určitým mechanismem, jako je průvodce. Zámek pro čtení obsahuje dokument naživu v RDT a označuje, že dokument nelze upravit. Zámek pro čtení můžete nastavit i v případě, že dokument nemá hierarchii nebo ID položky. Tato funkce umožňuje otevřít dokument v paměti a zadat ho do rdT bez toho, aby byl dokument vlastněný jakoukoli hierarchií. Tato funkce se používá jen zřídka.
Zámek držáku Instance IVsDocumentLockHolder rozhraní. Zámek je implementovaný funkcemi, jako jsou průvodci, kteří otevírají a upravují dokumenty mimo editor. Zámek umožňuje funkci přidat do dokumentu zámek pro úpravy, aby se zabránilo zavření dokumentu, když je dokument stále upravován. Za normálních okolností se zámky úprav přidávají jenom do oken dokumentů (to znamená editorů).

Každá položka v RDT má přidruženou jedinečnou hierarchii nebo ID položky, které obecně odpovídá jednomu uzlu v projektu. Všechny dokumenty, které jsou k dispozici pro úpravy, obvykle vlastní hierarchie. Položky provedené v ovládacím prvku RDT, který projekt nebo přesněji – která hierarchie aktuálně vlastní objekt dat dokumentu, který se upravuje. Pomocí informací v RDT může integrované vývojové prostředí (IDE) zabránit otevření dokumentu více než jedním projektem najednou.

Hierarchie také řídí trvalost dat a používá informace v RDT k aktualizaci dialogových oken Uložit a Uložit jako . Když uživatelé upraví dokument a pak v nabídce Soubor zvolí příkaz Ukončit, zobrazí se jim integrované vývojové prostředí s dialogovým oknem Uložit změny, aby se zobrazily všechny projekty a položky projektu, které jsou aktuálně změněny. Uživatelé tak můžou zvolit, které dokumenty se mají uložit. Ze sady RDT se vygeneruje seznam dokumentů, které chcete uložit (tj. ty dokumenty, které mají změny). Všechny položky, které očekáváte, že se zobrazí v dialogovém okně Uložit změny při ukončení aplikace, by měly mít záznamy v RDT. RdT koordinuje, které dokumenty jsou uloženy a zda se uživateli zobrazí výzva k operaci uložení pomocí hodnot zadaných v položce Příznaky pro každý dokument. Další informace o příznakech RDT naleznete v výčtu _VSRDTFLAGS .

Úpravy zámků a zámků pro čtení

Úpravy zámků a zámků pro čtení se nacházejí v sadě RDT. Okno dokumentu zvýší a sníží zámek úprav. Když tedy uživatel otevře nové okno dokumentu, počet zámků úprav se zvýší o jeden. Když počet zámků úprav dosáhne nuly, je hierarchie signalována k zachování nebo uložení dat pro přidružený dokument. Hierarchie pak může uchovávat data jakýmkoli způsobem, včetně uchování jako souboru nebo položky v úložišti. Metodu LockDocument IVsRunningDocumentTable v rozhraní můžete použít k přidání zámků pro úpravy a zámků pro čtení a metodu UnlockDocument pro odebrání těchto zámků.

Obvykle platí, že když je okno dokumentu pro editor vytvořena instance, rámeček okna automaticky přidá zámek úprav dokumentu v RDT. Pokud ale vytvoříte vlastní zobrazení dokumentu, které nepoužívá standardní okno dokumentu (to znamená, že neimplementuje IVsWindowFrame rozhraní), musíte nastavit vlastní zámek úprav. Například v průvodci se dokument upravuje bez otevření v editoru. Aby bylo možné zámky dokumentů otevřít pomocí průvodců a podobných entit, musí tyto entity implementovat IVsDocumentLockHolder rozhraní. Pokud chcete zaregistrovat držák zámku dokumentu, zavolejte metodu RegisterDocumentLockHolder a předejte implementaci IVsDocumentLockHolder . Tím přidáte držák zámku dokumentu do RDT. Dalším scénářem implementace držáku zámku dokumentu je, když dokument otevřete prostřednictvím speciálního okna nástroje. V tomto případě nemůžete okno nástroje zavřít. Když se však zaregistrujete jako držitel zámku dokumentu v RDT, může integrované vývojové prostředí (IDE) volat vaši implementaci CloseDocumentHolder metody, aby se zobrazila výzva k zavření dokumentu.

Další použití spuštěné tabulky dokumentů

Další entity v integrovaném vývojovém prostředí (IDE) používají rdT k získání informací o dokumentech. Správce správy zdrojového kódu například pomocí sady RDT řekne systému, aby znovu načítá dokument v editoru, jakmile získá nejnovější verzi souboru. K tomu správce správy zdrojového kódu vyhledá soubory v RDT a zjistí, jestli jsou některé z nich otevřené. Pokud ano, správce správy zdrojového kódu nejprve zkontroluje, že hierarchie implementuje metodu ReloadItem . Pokud projekt neimplementuje metodu ReloadItem , správce správy zdrojového ReloadDocData kódu zkontroluje implementaci metody přímo do datového objektu dokumentu.

Integrované vývojové prostředí (IDE) také používá RDT k opětovnému zobrazení otevřeného dokumentu (přineste ho do popředí), pokud uživatel požádá o tento dokument. Další informace naleznete v tématu Zobrazení souborů pomocí příkazu Otevřít soubor. Chcete-li zjistit, zda je soubor otevřen v RDT, proveďte jednu z následujících věcí.

  • Zadejte dotaz na moniker dokumentu (tj. úplnou cestu k dokumentu), abyste zjistili, jestli je položka otevřená.

  • Pomocí hierarchie nebo ID položky požádejte systém projektu o úplnou cestu k dokumentu a vyhledejte položku v RDT.

Viz také