Sdílet prostřednictvím


Alternativy k architektuře dokument/zobrazení

Aplikace MFC obvykle používají architekturu dokumentu/zobrazení ke správě informací, formátů souborů a vizuální reprezentace dat uživatelům. U většiny desktopových aplikací je architektura dokumentů a zobrazení vhodná a efektivní architektura aplikací. Tato architektura odděluje data od zobrazení a ve většině případů zjednodušuje vaši aplikaci a snižuje redundantní kód.

Architektura dokumentu a zobrazení ale není vhodná pro některé situace. Podívejte se na tyto příklady:

  • Pokud portujete aplikaci napsanou v jazyce C pro Windows, můžete ho před přidáním podpory dokumentu nebo zobrazení do aplikace dokončit.

  • Pokud píšete jednoduchý nástroj, můžete zjistit, že bez architektury dokumentu nebo zobrazení.

  • Pokud váš původní kód už kombinuje správu dat se zobrazením dat, přesun kódu do modelu dokumentu a zobrazení nestojí za to, protože je nutné tyto dva oddělit. Můžete raději nechat kód tak, jak je.

Chcete-li vytvořit aplikaci, která nepoužívá architekturu dokumentu/zobrazení, zrušte zaškrtnutí políčka Podpora architektury dokumentu/zobrazení v kroku 1 Průvodce aplikací MFC. Podrobnosti najdete v Průvodci aplikací MFC.

Poznámka

Dialogové aplikace vytvořené průvodcem aplikací MFC nepoužívají architekturu dokumentu nebo zobrazení, takže pokud vyberete typ aplikace dialogového okna, je zaškrtávací políčko Podpora architektury dokumentů a zobrazení zakázaná.

Průvodci Visual C++ a editory zdrojových a dialogových oken pracují s vygenerovanou aplikací stejně jako s jakoukoli jinou aplikací vygenerovanou průvodcem. Aplikace může podporovat panely nástrojů, posuvníky a stavový řádek a má pole O produktu. Vaše aplikace nezaregistruje žádné šablony dokumentů a nebude obsahovat třídu dokumentů.

Všimněte si, že vygenerovaná aplikace má třídu zobrazení odvozenou CChildViewod CWnd. MFC vytvoří a umístí jednu instanci třídy zobrazení v oknech rámců vytvořených vaší aplikací. MFC stále vynucuje použití okna zobrazení, protože zjednodušuje umístění a správu obsahu aplikace. Do člena této třídy můžete přidat kód obrazu OnPaint . Váš kód by měl místo rámce přidat posuvníky do zobrazení.

Vzhledem k tomu, že architektura dokumentu a zobrazení poskytovaná prostředím MFC zodpovídá za implementaci mnoha základních funkcí aplikace, její absence v projektu znamená, že zodpovídáte za implementaci mnoha důležitých funkcí vaší aplikace:

  • Jak je uvedeno v Průvodci aplikací MFC, nabídka aplikace obsahuje pouze příkazy Nový a Ukončit v nabídce Soubor . (Nový příkaz se podporuje jenom pro aplikace MDI, ne pro aplikace SDI bez podpory document/View.) Vygenerovaný prostředek nabídky nebude podporovat seznam naposledy použitých položek.

  • Pro všechny příkazy, které bude vaše aplikace podporovat, včetně příkazu Otevřít a Uložit v nabídce Soubor, musíte přidat funkce obslužné rutiny a implementace. MFC obvykle poskytuje kód pro podporu těchto funkcí, ale tato podpora je úzce svázaná s architekturou dokumentu/zobrazení.

  • Pokud jste o to požádali, bude panel nástrojů pro vaši aplikaci minimální.

Důrazně doporučujeme použít Průvodce aplikací MFC k vytváření aplikací bez architektury dokumentů a zobrazení, protože průvodce zaručuje správnou architekturu MFC. Pokud se ale musíte vyhnout použití průvodce, tady je několik přístupů k obejití architektury dokumentu a zobrazení v kódu:

  • Zachází s dokumentem jako s nepoužívaným připojením a implementujte kód správy dat ve třídě zobrazení, jak je navrhováno výše. Režie dokumentu je poměrně nízká. Jeden objekt CDocument způsobuje malou režii sám o sobě, plus malé režijní náklady CDocumentzákladní třídy, CCmdTarget a CObject. Obě druhé třídy jsou malé.

    Deklarováno v CDocument:

    • Dva CString objekty.

    • Tři BOOLs.

    • Jeden CDocTemplate ukazatel.

    • Jeden CPtrList objekt, který obsahuje seznam zobrazení dokumentu.

    Dokument navíc vyžaduje dobu, po kterou je potřeba vytvořit objekt dokumentu, jeho objekty zobrazení, okno rámečku a objekt šablony dokumentu.

  • Zachází s dokumentem i zobrazením jako s nepoužívanými doplňovacími funkcemi. Místo zobrazení umístěte správu dat a nakreslete kód do okna rámečku. Tento přístup je blíže programovacímu modelu jazyka C.

  • Přepište části architektury MFC, které vytvářejí dokument a zobrazení, aby se vůbec eliminovaly jejich vytváření. Proces vytvoření dokumentu začíná voláním CWinApp::AddDocTemplate. Eliminujte toto volání z členské funkce třídy InitInstance aplikace a místo toho vytvořte okno rámce sami.InitInstance Vložte kód pro správu dat do třídy okna rámečku. Proces vytvoření dokumentu nebo zobrazení je znázorněn v dokumentu nebo zobrazení. Je to více práce a vyžaduje hlubší pochopení architektury, ale uvolní vás zcela režijní náklady na dokument nebo zobrazení.

Článek MFC: Použití databázových tříd bez dokumentů a zobrazení poskytuje konkrétnější příklady alternativ dokumentů a zobrazení v kontextu databázových aplikací.

Viz také

Architektura dokumentů a zobrazení