- @page overview_docview Document/View Framework
-
- Classes: wxDocument, wxView, wxDocTemplate, wxDocManager, wxDocParentFrame,
- wxDocChildFrame, wxDocMDIParentFrame, wxDocMDIChildFrame,
- wxCommand, wxCommandProcessor
-
- The document/view framework is found in most application frameworks, because it
- can dramatically simplify the code required to build many kinds of application.
-
- The idea is that you can model your application primarily in terms of @e documents to store data
- and provide interface-independent operations upon it, and @e views to visualise and manipulate
- the data. Documents know how to do input and output given stream objects, and views are responsible
- for taking input from physical windows and performing the manipulation on the document data.
-
- If a document's data changes, all views should be updated to reflect the change.
- The framework can provide many user-interface elements based on this model.
-
- Once you have defined your own classes and the relationships between them, the framework
- takes care of popping up file selectors, opening and closing files, asking the user to save
- modifications, routing menu commands to appropriate (possibly default) code, even
- some default print/preview functionality and support for command undo/redo.
-
- The framework is highly modular, allowing overriding and replacement of functionality
- and objects to achieve more than the default behaviour.
+@page overview_docview Document/View Framework
+
+@tableofcontents
+
+The document/view framework is found in most application frameworks, because it
+can dramatically simplify the code required to build many kinds of application.
+
+The idea is that you can model your application primarily in terms of
+@e documents to store data and provide interface-independent operations upon
+it, and @e views to visualise and manipulate the data. Documents know how to do
+input and output given stream objects, and views are responsible for taking
+input from physical windows and performing the manipulation on the document
+data.
+
+If a document's data changes, all views should be updated to reflect the
+change. The framework can provide many user-interface elements based on this
+model.
+
+Once you have defined your own classes and the relationships between them, the
+framework takes care of popping up file selectors, opening and closing files,
+asking the user to save modifications, routing menu commands to appropriate
+(possibly default) code, even some default print/preview functionality and
+support for command undo/redo.
+
+The framework is highly modular, allowing overriding and replacement of
+functionality and objects to achieve more than the default behaviour.
+
+These are the overall steps involved in creating an application based on the
+document/view framework:
+
+@li Define your own document and view classes, overriding a minimal set of
+ member functions e.g. for input/output, drawing and initialization.
+@li Define any subwindows (such as a scrolled window) that are needed for the
+ view(s). You may need to route some events to views or documents, for
+ example, "OnPaint" needs to be routed to wxView::OnDraw.
+@li Decide what style of interface you will use: Microsoft's MDI (multiple
+ document child frames surrounded by an overall frame), SDI (a separate,
+ unconstrained frame for each document), or single-window (one document open
+ at a time, as in Windows Write).
+@li Use the appropriate wxDocParentFrame and wxDocChildFrame classes. Construct
+ an instance of wxDocParentFrame in your wxApp::OnInit, and a
+ wxDocChildFrame (if not single-window) when you initialize a view. Create
+ menus using standard menu ids (such as wxID_OPEN, wxID_PRINT).
+@li Construct a single wxDocManager instance at the beginning of your
+ wxApp::OnInit, and then as many wxDocTemplate instances as necessary to
+ define relationships between documents and views. For a simple application,
+ there will be just one wxDocTemplate.