\wxheading{Remarks}
-Although internally an MDI child frame is a child of the MDI client window, in wxWindows
+Although internally an MDI child frame is a child of the MDI client window, in wxWidgets
you create it as a child of \helpref{wxMDIParentFrame}{wxmdiparentframe}. You can usually
forget that the client window exists.
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxMDIChildFrame::wxMDIChildFrame}\label{wxmdichildframeconstr}
+\membersection{wxMDIChildFrame::wxMDIChildFrame}\label{wxmdichildframector}
\func{}{wxMDIChildFrame}{\void}
\docparam{title}{The caption to be displayed on the frame's title bar.}
\docparam{pos}{The window position. A value of (-1, -1) indicates a default position, chosen by
-either the windowing system or wxWindows, depending on platform.}
+either the windowing system or wxWidgets, depending on platform.}
\docparam{size}{The window size. A value of (-1, -1) indicates a default size, chosen by
-either the windowing system or wxWindows, depending on platform.}
+either the windowing system or wxWidgets, depending on platform.}
\docparam{style}{The window style. See \helpref{wxMDIChildFrame}{wxmdichildframe}.}
\helpref{wxMDIChildFrame::Create}{wxmdichildframecreate}
-\membersection{wxMDIChildFrame::\destruct{wxMDIChildFrame}}
+\membersection{wxMDIChildFrame::\destruct{wxMDIChildFrame}}\label{wxmdichildframedtor}
\func{}{\destruct{wxMDIChildFrame}}{\void}
\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp
\param{const wxString\& }{name = ``frame"}}
-Used in two-step frame construction. See \helpref{wxMDIChildFrame::wxMDIChildFrame}{wxmdichildframeconstr}\rtfsp
+Used in two-step frame construction. See \helpref{wxMDIChildFrame::wxMDIChildFrame}{wxmdichildframector}\rtfsp
for further details.
\membersection{wxMDIChildFrame::Maximize}\label{wxmdichildframemaximize}
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxMDIClientWindow::wxMDIClientWindow}\label{wxmdiclientwindowconstr}
+\membersection{wxMDIClientWindow::wxMDIClientWindow}\label{wxmdiclientwindowctor}
\func{}{wxMDIClientWindow}{\void}
\wxheading{See also}
-\helpref{wxMDIParentFrame::wxMDIParentFrame}{wxmdiparentframeconstr},\rtfsp
+\helpref{wxMDIParentFrame::wxMDIParentFrame}{wxmdiparentframector},\rtfsp
\helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient}
-\membersection{wxMDIClientWindow::\destruct{wxMDIClientWindow}}
+\membersection{wxMDIClientWindow::\destruct{wxMDIClientWindow}}\label{wxmdiclientwindowdtor}
\func{}{\destruct{wxMDIClientWindow}}{\void}
\func{bool}{CreateClient}{\param{wxMDIParentFrame* }{parent}, \param{long}{ style = 0}}
-Used in two-step frame construction. See \helpref{wxMDIClientWindow::wxMDIClientWindow}{wxmdiclientwindowconstr}\rtfsp
+Used in two-step frame construction. See \helpref{wxMDIClientWindow::wxMDIClientWindow}{wxmdiclientwindowctor}\rtfsp
for further details.
\section{\class{wxMDIParentFrame}}\label{wxmdiparentframe}
There may be multiple MDI parent frames in a single application, but this probably only makes sense
within programming development environments.
-Child frames may be either \helpref{wxMDIChildFrame}{wxmdichildframe}, or \helpref{wxFrame}{wxframe}.
+Child frames may be of class \helpref{wxMDIChildFrame}{wxmdichildframe} (contained
+within the parent frame) or \helpref{wxFrame}{wxframe} (shown as a top-level frame).
An MDI parent frame always has a \helpref{wxMDIClientWindow}{wxmdiclientwindow} associated with it, which
is the parent for MDI client frames.
-This client window may be resized to accomodate non-MDI windows, as seen in Microsoft Visual C++ (TM) and
+This client window may be resized to accommodate non-MDI windows, as seen in Microsoft Visual C++ (TM) and
Microsoft Publisher (TM), where a documentation window is placed to one side of the workspace.
MDI remains popular despite dire warnings from Microsoft itself that MDI is an obsolete
\twocolitem{\windowstyle{wxTHICK\_FRAME}}{Displays a thick frame around the window (Windows and Motif only).}
\twocolitem{\windowstyle{wxVSCROLL}}{Displays a vertical scrollbar in the {\it client window}, allowing
the user to view child frames that are off the current view.}
-\twocolitem{\windowxstyle{wxFRAME\_NO\_WINDOW\_MENU}{Under Windows, removes the Window menu that is normally
+\twocolitem{\windowstyle{wxFRAME\_NO\_WINDOW\_MENU}}{Under Windows, removes the Window menu that is normally
added automatically.}
\end{twocollist}
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxMDIParentFrame::wxMDIParentFrame}\label{wxmdiparentframeconstr}
+\membersection{wxMDIParentFrame::wxMDIParentFrame}\label{wxmdiparentframector}
\func{}{wxMDIParentFrame}{\void}
\docparam{title}{The caption to be displayed on the frame's title bar.}
\docparam{pos}{The window position. A value of (-1, -1) indicates a default position, chosen by
-either the windowing system or wxWindows, depending on platform.}
+either the windowing system or wxWidgets, depending on platform.}
\docparam{size}{The window size. A value of (-1, -1) indicates a default size, chosen by
-either the windowing system or wxWindows, depending on platform.}
+either the windowing system or wxWidgets, depending on platform.}
\docparam{style}{The window style. See \helpref{wxMDIParentFrame}{wxmdiparentframe}.}
\helpref{wxMDIParentFrame::Create}{wxmdiparentframecreate},\rtfsp
\helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient}
-\membersection{wxMDIParentFrame::\destruct{wxMDIParentFrame}}
+\membersection{wxMDIParentFrame::\destruct{wxMDIParentFrame}}\label{wxmdiparentframedtor}
\func{}{\destruct{wxMDIParentFrame}}{\void}
\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE \pipe wxVSCROLL \pipe wxHSCROLL},\rtfsp
\param{const wxString\& }{name = ``frame"}}
-Used in two-step frame construction. See \helpref{wxMDIParentFrame::wxMDIParentFrame}{wxmdiparentframeconstr}\rtfsp
+Used in two-step frame construction. See \helpref{wxMDIParentFrame::wxMDIParentFrame}{wxmdiparentframector}\rtfsp
for further details.
\membersection{wxMDIParentFrame::GetClientSize}\label{wxmdiparentframegetclientsize}
\helpref{wxMDIParentFrame::GetToolBar}{wxmdiparentframegettoolbar},\rtfsp
\helpref{wxMDIParentFrame::SetToolBar}{wxmdiparentframesettoolbar},\rtfsp
-\helpref{wxWindow}{wxwindowonsize},\rtfsp
\helpref{wxMDIClientWindow}{wxmdiclientwindow}
\constfunc{wxMenu*}{GetWindowMenu}{\void}
-Returns the current Window menu (added by wxWindows to the menubar). This function
+Returns the current Window menu (added by wxWidgets to the menubar). This function
is available under Windows only.
\membersection{wxMDIParentFrame::OnCreateClient}\label{wxmdiparentframeoncreateclient}
\func{virtual wxMDIClientWindow*}{OnCreateClient}{\void}
-Override this to return a different kind of client window.
+Override this to return a different kind of client window. If you override this function,
+you must create your parent frame in two stages, or your function will never be called,
+due to the way C++ treats virtual functions called from constructors. For example:
+
+\begin{verbatim}
+ frame = new MyParentFrame;
+ frame->Create(parent, myParentFrameId, wxT("My Parent Frame"));
+\end{verbatim}
\wxheading{Remarks}
Note that it is probably impossible to have a client window that scrolls as well as painting
a bitmap or pattern, since in {\bf OnScroll}, the scrollbar positions always return zero.
-(Solutions to: \verb$julian.smart@ukonline.co.uk$).
+(Solutions to: {\tt julian.smart@btopenworld.com}).
\wxheading{See also}