Více typů dokumentů, zobrazení a oken s rámečkem
Standardní vztah mezi dokumentem, jeho zobrazením a oknem rámečku je popsán v části Vytvoření dokumentu/zobrazení. Mnoho aplikací podporuje jeden typ dokumentu (ale možná více otevřených dokumentů tohoto typu) s jedním zobrazením dokumentu a pouze jedním oknem rámečku na dokument. Některé aplikace ale můžou potřebovat změnit jednu nebo více těchto výchozích hodnot.
O čem chcete vědět víc
Více typů dokumentů
Průvodce aplikací MFC vytvoří jednu třídu dokumentu za vás. V některých případech ale možná budete muset podporovat více než jeden typ dokumentu. Vaše aplikace může například potřebovat dokumenty listu a grafu. Každý typ dokumentu je reprezentován vlastní třídou dokumentu a pravděpodobně také vlastní třídou zobrazení. Když uživatel zvolí příkaz Nový soubor, zobrazí rozhraní dialogové okno se seznamem podporovaných typů dokumentů. Pak vytvoří dokument typu, který uživatel zvolí. Každý typ dokumentu se spravuje pomocí vlastního objektu šablony dokumentu.
Pokud chcete vytvořit další třídy dokumentů, přečtěte si téma Přidání třídy. Jako typ třídy zvolte CDocument , ze které chcete odvodit požadované informace o dokumentu, a zadejte je. Pak implementujte data nové třídy.
Pokud chcete rozhraní initInstance init init InitInstance inicializovat, musíte přidat druhé volání AddDocTemplate AddDocTemplate. Další informace najdete v tématu Šablony dokumentů.
Více zobrazení
Mnoho dokumentů vyžaduje jenom jedno zobrazení, ale je možné podporovat více než jedno zobrazení jednoho dokumentu. Aby bylo možné implementovat více zobrazení, objekt dokumentu uchovává seznam jeho zobrazení, poskytuje členské funkce pro přidávání a odebírání zobrazení a poskytuje členskou funkci UpdateAllViews , která informuje více zobrazení o změně dat dokumentu.
MFC podporuje tři běžná uživatelská rozhraní vyžadující více zobrazení ve stejném dokumentu. Jedná se o tyto modely:
Zobrazit objekty stejné třídy, každý v samostatném okně s rámečkem dokumentu MDI.
Možná budete chtít podporovat vytvoření druhého okna rámce v dokumentu. Uživatel může zvolit příkaz Nové okno, který otevře druhý rámeček se zobrazením stejného dokumentu a pak pomocí těchto dvou snímků zobrazí různé části dokumentu současně. Architektura podporuje příkaz Nové okno v nabídce Okno pro aplikace MDI duplikováním počátečního okna rámečku a zobrazením připojeným k dokumentu.
Umožňuje zobrazit objekty stejné třídy ve stejném okně rámečku dokumentu.
Rozdělená okna rozdělují prostor zobrazení jednoho okna dokumentu na několik samostatných zobrazení dokumentu. Architektura vytvoří více objektů zobrazení ze stejné třídy zobrazení. Další informace naleznete v tématu Splitter Windows.
Umožňuje zobrazit objekty různých tříd v jednom okně rámečku.
V tomto modelu sdílí varianta rozděleného okna více zobrazení jedno okno rámečku. Zobrazení jsou vytvořena z různých tříd, přičemž každé zobrazení poskytuje jiný způsob zobrazení stejného dokumentu. Jedno zobrazení může například zobrazit dokument pro zpracování textu v normálním režimu, zatímco druhé zobrazení ho zobrazuje v režimu osnovy. Rozdělovač umožňuje uživateli upravit relativní velikosti zobrazení.
Následující obrázek, rozdělený na části a, b a c, ukazuje tři modely uživatelského rozhraní v pořadí uvedeném výše.
Uživatelská rozhraní s více zobrazeními
Architektura poskytuje tyto modely implementací příkazu New Window a poskytnutím třídy CSplitterWnd, jak je popsáno v splitter Windows. Jako výchozí bod můžete implementovat jiné modely. Ukázkové programy, které ilustrují různé konfigurace zobrazení, oken snímků a rozdělovačů, najdete v tématu Ukázky mfc.
Další informace o UpdateAllViews
, viz třída CView v MFC Reference a Scribble ukázka.
Více oken s rámečkem
K vytvoření druhého okna ve stejném dokumentu můžete použít příkaz Nové okno v nabídce Okno pro aplikace MDI. Další informace naleznete v prvním modelu na obrázku Multiple-View User Interfaces.
Okna s rozdělovačem
V rozděleném okně je okno nebo může být rozdělené do dvou nebo více posouvatelných podoken. Rozdělovač (nebo "rozdělený rámeček") v rámečku okna vedle posuvníků umožňuje uživateli upravit relativní velikosti podoken. Každé podokno je zobrazení ve stejném dokumentu. V "dynamických" rozdělovačích jsou zobrazení stejné třídy, jak je znázorněno v části b obrázku Uživatelská rozhraní s více zobrazeními. V "statických" rozdělovačích mohou být zobrazení různých tříd. Rozdělovací okna obou typů jsou podporována třídou CSplitterWnd.
Dynamická okna rozdělovačů se zobrazeními stejné třídy umožňují uživateli rozdělit okno na více podoken a pak se posouvat do různých podoken, aby viděl různé části dokumentu. Uživatel může také zrušit rozsvícené okno a odebrat další zobrazení. Příkladem jsou okna rozdělovače přidaná do ukázky Scribble. Toto téma popisuje techniku vytváření dynamických rozdělovačů. Dynamické rozdělovací okno je zobrazeno v části b obrázku Více zobrazení uživatelského rozhraní.
Statická rozdělovací okna, se zobrazeními různých tříd, začínají oknem rozděleným do několika podoken, z nichž každá má jiný účel. Například v editoru rastrových obrázků Visual C++ se v okně obrázku zobrazují vedle sebe dvě podokna. V levém podokně se zobrazí obrázek rastrového obrázku o životní velikosti. V pravém podokně se zobrazí zvětšený nebo zvětšený obrázek stejného rastrového obrázku. Podokna jsou oddělena "rozdělovačem", který uživatel může přetáhnout a změnit relativní velikosti podoken. Statické rozdělovací okno se zobrazuje v části c obrázku Uživatelská rozhraní s více zobrazeními.
Další informace naleznete v tématu třídy CSplitterWnd v referenční dokumentaci MFC a ukázky MFC.