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 CChildView
od 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
CDocument
zá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řídyInitInstance
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í.