Sdílet prostřednictvím


TN025: Vytvoření dokumentu, zobrazení a rámečku

[!POZNÁMKA]

Následující technická poznámka nebyla aktualizována, protože byla poprvé zahrnuta v dokumentaci online.V důsledku toho některé postupy a témata mohou být nesprávné nebo zastaralé.Pro nejnovější informace je vhodné vyhledat téma zájmu v dokumentaci online index.

Tato poznámka popisuje vytváření a vlastnictví problémy pro WinApps, DocTemplates, dokumenty, snímky a zobrazení.

WinApp

Existuje CWinApp objektu v systému.

Je staticky konstruovány a iniciovány v rámci vnitřní implementace WinMain.Musí být odvozena od CWinApp žádnou užitečné (výjimka: rozšířené knihovny DLL nemají CWinApp instance – inicializace probíhá DllMain místo).

Ten CWinApp objekt vlastní seznam šablon dokumentu ( CPtrList).Existuje jeden nebo více šablona dokumentu na jednu žádost.DocTemplates jsou obvykle načteny ze souboru prostředků (to znamená pole řetězců) v CWinApp::InitInstance.

pTemplate = new CDocTemplate(IDR_MYDOCUMENT, ...);
AddDocTemplate(pTemplate);

Ten CWinApp objekt vlastní všechna okna rámce v aplikaci.Hlavní okno aplikace by měly být uloženy v CWinApp::m_pMainWnd; obvykle nastavit m_pMainWnd v InitInstance provedení, pokud necháte ještě AppWizard to udělá za vás.Pro rozhraní jediného dokumentu (SDI) je to jedna CFrameWnd který slouží jako hlavního rámce okna aplikace, stejně jako jediný rámeček okna dokumentu.U rozhraní více dokumentů (MDI) je rámec MDI (třída CMDIFrameWnd), slouží jako hlavní aplikační okno rámce, který obsahuje všechny podřízené CFrameWnds.Je každé podřízené okno třídy CMDIChildWnd (odvozené z CFrameWnd) a slouží jako jeden z okna rámce potenciálně mnoho dokumentů.

DocTemplates

CDocTemplate Je tvůrce a správce dokumentů.Vlastní dokumenty, které vytvoří.Pokud vaše aplikace používá níže popsaného přístupu založeného na zdrojích, není nutné odvozovat ze CDocTemplate.

Aplikace SDI, třída CSingleDocTemplate uchovává informace o jeden otevřený dokument.Aplikace MDI, třída CMultiDocTemplate , vede seznam ( CPtrList) z právě otevřené dokumenty vytvořené z této šablony.CDocTemplate::AddDocumenta CDocTemplate::RemoveDocument poskytují virtuální členská funkce pro přidání nebo odebrání šablony dokumentu.CDocTemplateje přítel z CDocument tak můžeme nastavit chráněné CDocument::m_pDocTemplate zpět ukazatel na položku Šablona dokumentu, které byl dokument vytvořen.

CWinAppve výchozím nastavení zpracovává OnFileOpen provedení, které bude zase dotaz všechny šablony dokumentu.Implementace zahrnuje hledání již otevřené dokumenty a rozhodování o tom, co k otevření nové dokumenty ve formátu.

CDocTemplatespravuje uživatelské rozhraní vazby dokumentů a rámců.

CDocTemplatesleduje počet nepojmenované dokumenty.

CDocument

A CDocument je vlastněn CDocTemplate.

Dokumenty k dispozici seznam aktuálně otevřené zobrazení (odvozené z CView), prohlížíte dokument ( CPtrList).

Dokumenty nelze vytvořit/zničit názory, ale jsou připojeny mezi sebou po jejich vytvoření.Při uzavření dokumentu (to znamená pomocí soubor/zavřít), budou uzavřeny všechny připojené pohledy.Po ukončení poslední zobrazení v dokumentu (to znamená, okno nebo Zavřít) dokumentu bude uzavřen.

CDocument::AddView, RemoveView Rozhraní se používá k udržování seznamu zobrazení.CDocument je přítel z CView tak, aby bylo možné nastavit CView::m_pDocument zadní ukazatele.

CFrameWnd

A CFrameWnd (také známý jako rámeček) hraje stejnou roli jako v MFC verze 1.0, ale nyní CFrameWnd třídy je určen k použití v mnoha případech bez odvození nové třídy.Odvozené třídy CMDIFrameWnd a CMDIChildWnd jsou také přizpůsobeny tak mnoho standardních příkazů jsou již implementovány.

CFrameWnd Je zodpovědný za vytvoření oken v klientské oblasti snímku.Obvykle je jeden hlavní okno plnění rámce v oblasti klienta.

Oblasti klienta pro MDI okno je vyplněn MDICLIENT prvek, který je rodičem všech oken MDI podřízené rámeček zase.SDI-okno nebo okno aplikace MDI podřízené rámeček klientské oblasti je obvykle plná CView-odvozené objektu window.U CSplitterWnd, je plná klientské oblasti zobrazení CSplitterWnd objektu okna a CView-okno odvozené objekty (jeden na podokna Rozdělit) jsou vytvořeny jako podřízeného okna CSplitterWnd.

Viz také

Další zdroje

Technické poznámky podle čísel

Technické poznámky podle kategorií