\helpref{wxEvtHandler}{wxevthandler}\\
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<wx/mdi.h>
+
\wxheading{Window styles}
\twocolwidtha{5cm}
Default constructor.
-\func{}{wxMDIChildFrame}{\param{wxMDIParentFrame* }{parent}, \param{const wxWindowID }{id},\rtfsp
+\func{}{wxMDIChildFrame}{\param{wxMDIParentFrame* }{parent}, \param{wxWindowID }{id},\rtfsp
\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp
\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp
\param{const wxString\& }{name = ``frame"}}
\membersection{wxMDIChildFrame::Create}\label{wxmdichildframecreate}
-\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp
+\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id},\rtfsp
\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp
\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp
\param{const wxString\& }{name = ``frame"}}
\helpref{wxMDIChildFrame::Activate}{wxmdichildframeactivate},\rtfsp
\helpref{wxMDIChildFrame::Maximize}{wxmdichildframemaximize}
-
\section{\class{wxMDIClientWindow}}\label{wxmdiclientwindow}
An MDI client window is a child of \helpref{wxMDIParentFrame}{wxmdiparentframe}, and manages zero or
\helpref{wxEvtHandler}{wxevthandler}\\
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<wx/mdi.h>
+
\wxheading{Remarks}
The client window is the area where MDI child windows exist. It doesn't have to cover the whole
\helpref{wxEvtHandler}{wxevthandler}\\
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<wx/mdi.h>
+
\wxheading{Remarks}
There may be multiple MDI parent frames in a single application, but this probably only makes sense
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{\windowstyle{wxFRAME\_NO\_WINDOW\_MENU}}{Under Windows, removes the Window menu that is normally
+added automatically.}
\end{twocollist}
See also \helpref{window styles overview}{windowstyles}.
Default constructor.
-\func{}{wxMDIParentFrame}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp
+\func{}{wxMDIParentFrame}{\param{wxWindow* }{parent}, \param{wxWindowID }{id},\rtfsp
\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp
\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE \pipe wxVSCROLL \pipe wxHSCROLL},\rtfsp
\param{const wxString\& }{name = ``frame"}}
\membersection{wxMDIParentFrame::Create}\label{wxmdiparentframecreate}
-\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID }{id},\rtfsp
+\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id},\rtfsp
\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp
\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE \pipe wxVSCROLL \pipe wxHSCROLL},\rtfsp
\param{const wxString\& }{name = ``frame"}}
\helpref{wxWindow}{wxwindowonsize},\rtfsp
\helpref{wxMDIClientWindow}{wxmdiclientwindow}
+
+\pythonnote{The wxPython version of this method takes no arguments and
+returns a tuple containing width and height.}
+
\membersection{wxMDIParentFrame::GetActiveChild}\label{wxmdiparentframegetactivechild}
\constfunc{wxMDIChildFrame*}{GetActiveChild}{\void}
\helpref{wxMDIParentFrame::SetToolBar}{wxmdiparentframesettoolbar}
+\membersection{wxMDIParentFrame::GetWindowMenu}\label{wxmdiparentframegetwindowmenu}
+
+\constfunc{wxMenu*}{GetWindowMenu}{\void}
+
+Returns the current Window menu (added by wxWindows 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@ukonline.co.uk}).
\wxheading{See also}
\helpref{wxMDIParentFrame::GetToolBar}{wxmdiparentframegettoolbar},\rtfsp
\helpref{wxMDIParentFrame::GetClientSize}{wxmdiparentframegetclientsize}
+\membersection{wxMDIParentFrame::SetWindowMenu}\label{wxmdiparentframesetwindowmenu}
+
+\func{void}{SetWindowMenu}{\param{wxMenu*}{ menu}}
+
+Call this to change the current Window menu. Ownership of the menu object passes to
+the frame when you call this function.
+
+This call is available under Windows only.
+
+To remove the window completely, use the wxFRAME\_NO\_WINDOW\_MENU window style.
+
\membersection{wxMDIParentFrame::Tile}\label{wxmdiparentframetile}
\func{void}{Tile}{\void}