]> git.saurik.com Git - wxWidgets.git/blame_incremental - docs/latex/wx/mdi.tex
* wxStream fixes (integer/line parsing).
[wxWidgets.git] / docs / latex / wx / mdi.tex
... / ...
CommitLineData
1\section{\class{wxMDIChildFrame}}\label{wxmdichildframe}
2
3An MDI child frame is a frame that can only exist on a \helpref{wxMDIClientWindow}{wxmdiclientwindow},
4which is itself a child of \helpref{wxMDIParentFrame}{wxmdiparentframe}.
5
6\wxheading{Derived from}
7
8\helpref{wxFrame}{wxframe}\\
9\helpref{wxWindow}{wxwindow}\\
10\helpref{wxEvtHandler}{wxevthandler}\\
11\helpref{wxObject}{wxobject}
12
13\wxheading{Include files}
14
15<wx/mdi.h>
16
17\wxheading{Window styles}
18
19\twocolwidtha{5cm}
20\begin{twocollist}\itemsep=0pt
21\twocolitem{\windowstyle{wxCAPTION}}{Puts a caption on the frame.}
22\twocolitem{\windowstyle{wxDEFAULT\_FRAME\_STYLE}}{Defined as {\bf wxMINIMIZE\_BOX \pipe wxMAXIMIZE\_BOX \pipe wxTHICK\_FRAME \pipe wxSYSTEM\_MENU \pipe wxCAPTION}.}
23\twocolitem{\windowstyle{wxICONIZE}}{Display the frame iconized (minimized) (Windows only).}
24\twocolitem{\windowstyle{wxMAXIMIZE}}{Displays the frame maximized (Windows only).}
25\twocolitem{\windowstyle{wxMAXIMIZE\_BOX}}{Displays a maximize box on the frame (Windows and Motif only).}
26\twocolitem{\windowstyle{wxMINIMIZE}}{Identical to {\bf wxICONIZE}.}
27\twocolitem{\windowstyle{wxMINIMIZE\_BOX}}{Displays a minimize box on the frame (Windows and Motif only).}
28\twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Displays a resizeable border around the window (Motif only;
29for Windows, it is implicit in wxTHICK\_FRAME).}
30\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{Stay on top of other windows (Windows only).}
31\twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Displays a system menu (Windows and Motif only).}
32\twocolitem{\windowstyle{wxTHICK\_FRAME}}{Displays a thick frame around the window (Windows and Motif only).}
33\end{twocollist}
34
35See also \helpref{window styles overview}{windowstyles}.
36
37\wxheading{Remarks}
38
39Although internally an MDI child frame is a child of the MDI client window, in wxWindows
40you create it as a child of \helpref{wxMDIParentFrame}{wxmdiparentframe}. You can usually
41forget that the client window exists.
42
43MDI child frames are clipped to the area of the MDI client window, and may be iconized
44on the client window.
45
46You can associate a menubar with a child frame as usual, although an MDI child doesn't display
47its menubar under its own title bar. The MDI parent frame's menubar will be changed to
48reflect the currently active child frame. If there are currently no children, the parent
49frame's own menubar will be displayed.
50
51\wxheading{See also}
52
53\helpref{wxMDIClientWindow}{wxmdiclientwindow}, \helpref{wxMDIParentFrame}{wxmdiparentframe},\rtfsp
54\helpref{wxFrame}{wxframe}
55
56\latexignore{\rtfignore{\wxheading{Members}}}
57
58\membersection{wxMDIChildFrame::wxMDIChildFrame}\label{wxmdichildframeconstr}
59
60\func{}{wxMDIChildFrame}{\void}
61
62Default constructor.
63
64\func{}{wxMDIChildFrame}{\param{wxMDIParentFrame* }{parent}, \param{wxWindowID }{id},\rtfsp
65\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp
66\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp
67\param{const wxString\& }{name = ``frame"}}
68
69Constructor, creating the window.
70
71\wxheading{Parameters}
72
73\docparam{parent}{The window parent. This should not be NULL.}
74
75\docparam{id}{The window identifier. It may take a value of -1 to indicate a default value.}
76
77\docparam{title}{The caption to be displayed on the frame's title bar.}
78
79\docparam{pos}{The window position. A value of (-1, -1) indicates a default position, chosen by
80either the windowing system or wxWindows, depending on platform.}
81
82\docparam{size}{The window size. A value of (-1, -1) indicates a default size, chosen by
83either the windowing system or wxWindows, depending on platform.}
84
85\docparam{style}{The window style. See \helpref{wxMDIChildFrame}{wxmdichildframe}.}
86
87\docparam{name}{The name of the window. This parameter is used to associate a name with the item,
88allowing the application user to set Motif resource values for
89individual windows.}
90
91\wxheading{Remarks}
92
93None.
94
95\wxheading{See also}
96
97\helpref{wxMDIChildFrame::Create}{wxmdichildframecreate}
98
99\membersection{wxMDIChildFrame::\destruct{wxMDIChildFrame}}
100
101\func{}{\destruct{wxMDIChildFrame}}{\void}
102
103Destructor. Destroys all child windows and menu bar if present.
104
105\membersection{wxMDIChildFrame::Activate}\label{wxmdichildframeactivate}
106
107\func{void}{Activate}{\void}
108
109Activates this MDI child frame.
110
111\wxheading{See also}
112
113\helpref{wxMDIChildFrame::Maximize}{wxmdichildframemaximize},\rtfsp
114\helpref{wxMDIChildFrame::Restore}{wxmdichildframerestore}
115
116\membersection{wxMDIChildFrame::Create}\label{wxmdichildframecreate}
117
118\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id},\rtfsp
119\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp
120\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp
121\param{const wxString\& }{name = ``frame"}}
122
123Used in two-step frame construction. See \helpref{wxMDIChildFrame::wxMDIChildFrame}{wxmdichildframeconstr}\rtfsp
124for further details.
125
126\membersection{wxMDIChildFrame::Maximize}\label{wxmdichildframemaximize}
127
128\func{void}{Maximize}{\void}
129
130Maximizes this MDI child frame.
131
132\wxheading{See also}
133
134\helpref{wxMDIChildFrame::Activate}{wxmdichildframeactivate},\rtfsp
135\helpref{wxMDIChildFrame::Restore}{wxmdichildframerestore}
136
137\membersection{wxMDIChildFrame::Restore}\label{wxmdichildframerestore}
138
139\func{void}{Restore}{\void}
140
141Restores this MDI child frame (unmaximizes).
142
143\wxheading{See also}
144
145\helpref{wxMDIChildFrame::Activate}{wxmdichildframeactivate},\rtfsp
146\helpref{wxMDIChildFrame::Maximize}{wxmdichildframemaximize}
147
148
149\section{\class{wxMDIClientWindow}}\label{wxmdiclientwindow}
150
151An MDI client window is a child of \helpref{wxMDIParentFrame}{wxmdiparentframe}, and manages zero or
152more \helpref{wxMDIChildFrame}{wxmdichildframe} objects.
153
154\wxheading{Derived from}
155
156\helpref{wxWindow}{wxwindow}\\
157\helpref{wxEvtHandler}{wxevthandler}\\
158\helpref{wxObject}{wxobject}
159
160\wxheading{Include files}
161
162<wx/mdi.h>
163
164\wxheading{Remarks}
165
166The client window is the area where MDI child windows exist. It doesn't have to cover the whole
167parent frame; other windows such as toolbars and a help window might coexist with it.
168There can be scrollbars on a client window, which are controlled by the parent window style.
169
170The {\bf wxMDIClientWindow} class is usually adequate without further derivation, and it is created
171automatically when the MDI parent frame is created. If the application needs to derive a new class,
172the function \helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient} must be
173overridden in order to give an opportunity to use a different class of client window.
174
175Under Windows 95, the client window will automatically have a sunken border style when
176the active child is not maximized, and no border style when a child is maximized.
177
178\wxheading{See also}
179
180\helpref{wxMDIChildFrame}{wxmdichildframe}, \helpref{wxMDIParentFrame}{wxmdiparentframe},\rtfsp
181\helpref{wxFrame}{wxframe}
182
183\latexignore{\rtfignore{\wxheading{Members}}}
184
185\membersection{wxMDIClientWindow::wxMDIClientWindow}\label{wxmdiclientwindowconstr}
186
187\func{}{wxMDIClientWindow}{\void}
188
189Default constructor.
190
191\func{}{wxMDIClientWindow}{\param{wxMDIParentFrame* }{parent}, \param{long}{ style = 0}}
192
193Constructor, creating the window.
194
195\wxheading{Parameters}
196
197\docparam{parent}{The window parent.}
198
199\docparam{style}{The window style. Currently unused.}
200
201\wxheading{Remarks}
202
203The second style of constructor is called within \helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient}.
204
205\wxheading{See also}
206
207\helpref{wxMDIParentFrame::wxMDIParentFrame}{wxmdiparentframeconstr},\rtfsp
208\helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient}
209
210\membersection{wxMDIClientWindow::\destruct{wxMDIClientWindow}}
211
212\func{}{\destruct{wxMDIClientWindow}}{\void}
213
214Destructor.
215
216\membersection{wxMDIClientWindow::CreateClient}\label{wxmdiclientwindowcreateclient}
217
218\func{bool}{CreateClient}{\param{wxMDIParentFrame* }{parent}, \param{long}{ style = 0}}
219
220Used in two-step frame construction. See \helpref{wxMDIClientWindow::wxMDIClientWindow}{wxmdiclientwindowconstr}\rtfsp
221for further details.
222
223\section{\class{wxMDIParentFrame}}\label{wxmdiparentframe}
224
225An MDI (Multiple Document Interface) parent frame is a window which can contain
226MDI child frames in its own `desktop'. It is a convenient way to avoid window clutter,
227and is used in many popular Windows applications, such as Microsoft Word(TM).
228
229\wxheading{Derived from}
230
231\helpref{wxFrame}{wxframe}\\
232\helpref{wxWindow}{wxwindow}\\
233\helpref{wxEvtHandler}{wxevthandler}\\
234\helpref{wxObject}{wxobject}
235
236\wxheading{Include files}
237
238<wx/mdi.h>
239
240\wxheading{Remarks}
241
242There may be multiple MDI parent frames in a single application, but this probably only makes sense
243within programming development environments.
244
245Child frames may be either \helpref{wxMDIChildFrame}{wxmdichildframe}, or \helpref{wxFrame}{wxframe}.
246
247An MDI parent frame always has a \helpref{wxMDIClientWindow}{wxmdiclientwindow} associated with it, which
248is the parent for MDI client frames.
249This client window may be resized to accomodate non-MDI windows, as seen in Microsoft Visual C++ (TM) and
250Microsoft Publisher (TM), where a documentation window is placed to one side of the workspace.
251
252MDI remains popular despite dire warnings from Microsoft itself that MDI is an obsolete
253user interface style.
254
255The implementation is native in Windows, and simulated under Motif. Under Motif,
256the child window frames will often have a different appearance from other frames
257because the window decorations are simulated.
258
259\wxheading{Window styles}
260
261\twocolwidtha{5cm}
262\begin{twocollist}\itemsep=0pt
263\twocolitem{\windowstyle{wxCAPTION}}{Puts a caption on the frame.}
264\twocolitem{\windowstyle{wxDEFAULT\_FRAME\_STYLE}}{Defined as {\bf wxMINIMIZE\_BOX \pipe wxMAXIMIZE\_BOX \pipe wxTHICK\_FRAME \pipe wxSYSTEM\_MENU \pipe wxCAPTION}.}
265\twocolitem{\windowstyle{wxHSCROLL}}{Displays a horizontal scrollbar in the {\it client window}, allowing
266the user to view child frames that are off the current view.}
267\twocolitem{\windowstyle{wxICONIZE}}{Display the frame iconized (minimized) (Windows only).}
268\twocolitem{\windowstyle{wxMAXIMIZE}}{Displays the frame maximized (Windows only).}
269\twocolitem{\windowstyle{wxMAXIMIZE\_BOX}}{Displays a maximize box on the frame (Windows and Motif only).}
270\twocolitem{\windowstyle{wxMINIMIZE}}{Identical to {\bf wxICONIZE}.}
271\twocolitem{\windowstyle{wxMINIMIZE\_BOX}}{Displays a minimize box on the frame (Windows and Motif only).}
272\twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Displays a resizeable border around the window (Motif only;
273for Windows, it is implicit in wxTHICK\_FRAME).}
274\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{Stay on top of other windows (Windows only).}
275\twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Displays a system menu (Windows and Motif only).}
276\twocolitem{\windowstyle{wxTHICK\_FRAME}}{Displays a thick frame around the window (Windows and Motif only).}
277\twocolitem{\windowstyle{wxVSCROLL}}{Displays a vertical scrollbar in the {\it client window}, allowing
278the user to view child frames that are off the current view.}
279\end{twocollist}
280
281See also \helpref{window styles overview}{windowstyles}.
282
283\wxheading{See also}
284
285\helpref{wxMDIChildFrame}{wxmdichildframe}, \helpref{wxMDIClientWindow}{wxmdiclientwindow},\rtfsp
286\helpref{wxFrame}{wxframe}, \helpref{wxDialog}{wxdialog}
287
288\latexignore{\rtfignore{\wxheading{Members}}}
289
290\membersection{wxMDIParentFrame::wxMDIParentFrame}\label{wxmdiparentframeconstr}
291
292\func{}{wxMDIParentFrame}{\void}
293
294Default constructor.
295
296\func{}{wxMDIParentFrame}{\param{wxWindow* }{parent}, \param{wxWindowID }{id},\rtfsp
297\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp
298\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE \pipe wxVSCROLL \pipe wxHSCROLL},\rtfsp
299\param{const wxString\& }{name = ``frame"}}
300
301Constructor, creating the window.
302
303\wxheading{Parameters}
304
305\docparam{parent}{The window parent. This should be NULL.}
306
307\docparam{id}{The window identifier. It may take a value of -1 to indicate a default value.}
308
309\docparam{title}{The caption to be displayed on the frame's title bar.}
310
311\docparam{pos}{The window position. A value of (-1, -1) indicates a default position, chosen by
312either the windowing system or wxWindows, depending on platform.}
313
314\docparam{size}{The window size. A value of (-1, -1) indicates a default size, chosen by
315either the windowing system or wxWindows, depending on platform.}
316
317\docparam{style}{The window style. See \helpref{wxMDIParentFrame}{wxmdiparentframe}.}
318
319\docparam{name}{The name of the window. This parameter is used to associate a name with the item,
320allowing the application user to set Motif resource values for
321individual windows.}
322
323\wxheading{Remarks}
324
325During the construction of the frame, the client window will be created. To use a different class
326from \helpref{wxMDIClientWindow}{wxmdiclientwindow}, override\rtfsp
327\helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient}.
328
329Under Windows 95, the client window will automatically have a sunken border style when
330the active child is not maximized, and no border style when a child is maximized.
331
332\wxheading{See also}
333
334\helpref{wxMDIParentFrame::Create}{wxmdiparentframecreate},\rtfsp
335\helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient}
336
337\membersection{wxMDIParentFrame::\destruct{wxMDIParentFrame}}
338
339\func{}{\destruct{wxMDIParentFrame}}{\void}
340
341Destructor. Destroys all child windows and menu bar if present.
342
343\membersection{wxMDIParentFrame::ActivateNext}\label{wxmdiparentframeactivatenext}
344
345\func{void}{ActivateNext}{\void}
346
347Activates the MDI child following the currently active one.
348
349\wxheading{See also}
350
351\helpref{wxMDIParentFrame::ActivatePrevious}{wxmdiparentframeactivateprevious}
352
353\membersection{wxMDIParentFrame::ActivatePrevious}\label{wxmdiparentframeactivateprevious}
354
355\func{void}{ActivatePrevious}{\void}
356
357Activates the MDI child preceding the currently active one.
358
359\wxheading{See also}
360
361\helpref{wxMDIParentFrame::ActivateNext}{wxmdiparentframeactivatenext}
362
363
364\membersection{wxMDIParentFrame::ArrangeIcons}\label{wxmdiparentframearrangeicons}
365
366\func{void}{ArrangeIcons}{\void}
367
368Arranges any iconized (minimized) MDI child windows.
369
370\wxheading{See also}
371
372\helpref{wxMDIParentFrame::Cascade}{wxmdiparentframecascade},\rtfsp
373\helpref{wxMDIParentFrame::Tile}{wxmdiparentframetile}
374
375\membersection{wxMDIParentFrame::Cascade}\label{wxmdiparentframecascade}
376
377\func{void}{Cascade}{\void}
378
379Arranges the MDI child windows in a cascade.
380
381\wxheading{See also}
382
383\helpref{wxMDIParentFrame::Tile}{wxmdiparentframetile},\rtfsp
384\helpref{wxMDIParentFrame::ArrangeIcons}{wxmdiparentframearrangeicons}
385
386\membersection{wxMDIParentFrame::Create}\label{wxmdiparentframecreate}
387
388\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id},\rtfsp
389\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp
390\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE \pipe wxVSCROLL \pipe wxHSCROLL},\rtfsp
391\param{const wxString\& }{name = ``frame"}}
392
393Used in two-step frame construction. See \helpref{wxMDIParentFrame::wxMDIParentFrame}{wxmdiparentframeconstr}\rtfsp
394for further details.
395
396\membersection{wxMDIParentFrame::GetClientSize}\label{wxmdiparentframegetclientsize}
397
398\constfunc{virtual void}{GetClientSize}{\param{int* }{width}, \param{int* }{height}}
399
400This gets the size of the frame `client area' in pixels.
401
402\wxheading{Parameters}
403
404\docparam{width}{Receives the client width in pixels.}
405
406\docparam{height}{Receives the client height in pixels.}
407
408\wxheading{Remarks}
409
410The client area is the area which may be drawn on by the programmer, excluding title bar, border, status bar,
411and toolbar if present.
412
413If you wish to manage your own toolbar (or perhaps you have more than one),
414provide an {\bf OnSize} event handler. Call {\bf GetClientSize} to
415find how much space there is for your windows and don't forget to set the size and position
416of the MDI client window as well as your toolbar and other windows (but not the status bar).
417
418If you have set a toolbar with \helpref{wxMDIParentFrame::SetToolbar}{wxmdiparentframesettoolbar},
419the client size returned will have subtracted the toolbar height. However, the available positions
420for the client window and other windows of the frame do not start at zero - you must add the toolbar height.
421
422The position and size of the status bar and toolbar (if known to the frame) are always managed
423by {\bf wxMDIParentFrame}, regardless of what behaviour is defined in your {\bf OnSize} event handler.
424However, the client window position and size are always set in {\bf OnSize}, so if you override this
425event handler, make sure you deal with the client window.
426
427You do not have to manage the size and position of MDI child windows, since they are managed
428automatically by the client window.
429
430\wxheading{See also}
431
432\helpref{wxMDIParentFrame::GetToolBar}{wxmdiparentframegettoolbar},\rtfsp
433\helpref{wxMDIParentFrame::SetToolBar}{wxmdiparentframesettoolbar},\rtfsp
434\helpref{wxWindow}{wxwindowonsize},\rtfsp
435\helpref{wxMDIClientWindow}{wxmdiclientwindow}
436
437
438\pythonnote{The wxPython version of this method takes no arguments and
439returns a tuple containing width and height.}
440
441\membersection{wxMDIParentFrame::GetActiveChild}\label{wxmdiparentframegetactivechild}
442
443\constfunc{wxMDIChildFrame*}{GetActiveChild}{\void}
444
445Returns a pointer to the active MDI child, if there is one.
446
447\membersection{wxMDIParentFrame::GetClientWindow}\label{wxmdiparentframegetclientwindow}
448
449\constfunc{wxMDIClientWindow*}{GetClientWindow}{\void}
450
451Returns a pointer to the client window.
452
453\wxheading{See also}
454
455\helpref{wxMDIParentFrame::OnCreateClient}{wxmdiparentframeoncreateclient}
456
457\membersection{wxMDIParentFrame::GetToolBar}\label{wxmdiparentframegettoolbar}
458
459\constfunc{virtual wxWindow*}{GetToolBar}{\void}
460
461Returns the window being used as the toolbar for this frame.
462
463\wxheading{See also}
464
465\helpref{wxMDIParentFrame::SetToolBar}{wxmdiparentframesettoolbar}
466
467\membersection{wxMDIParentFrame::OnCreateClient}\label{wxmdiparentframeoncreateclient}
468
469\func{virtual wxMDIClientWindow*}{OnCreateClient}{\void}
470
471Override this to return a different kind of client window.
472
473\wxheading{Remarks}
474
475You might wish to derive from \helpref{wxMDIClientWindow}{wxmdiclientwindow} in order
476to implement different erase behaviour, for example, such as painting a bitmap
477on the background.
478
479Note that it is probably impossible to have a client window that scrolls as well as painting
480a bitmap or pattern, since in {\bf OnScroll}, the scrollbar positions always return zero.
481(Solutions to: \verb$julian.smart@ukonline.co.uk$).
482
483\wxheading{See also}
484
485\helpref{wxMDIParentFrame::GetClientWindow}{wxmdiparentframegetclientwindow},\rtfsp
486\helpref{wxMDIClientWindow}{wxmdiclientwindow}
487
488\membersection{wxMDIParentFrame::SetToolBar}\label{wxmdiparentframesettoolbar}
489
490\func{virtual void}{SetToolBar}{\param{wxWindow*}{ toolbar}}
491
492Sets the window to be used as a toolbar for this
493MDI parent window. It saves the application having to manage the positioning
494of the toolbar MDI client window.
495
496\wxheading{Parameters}
497
498\docparam{toolbar}{Toolbar to manage.}
499
500\wxheading{Remarks}
501
502When the frame is resized, the toolbar is resized to be the width of
503the frame client area, and the toolbar height is kept the same.
504
505The parent of the toolbar must be this frame.
506
507If you wish to manage your own toolbar (or perhaps you have more than one),
508don't call this function, and instead manage your subwindows and the MDI client window by
509providing an {\bf OnSize} event handler. Call \helpref{wxMDIParentFrame::GetClientSize}{wxmdiparentframegetclientsize} to
510find how much space there is for your windows.
511
512Note that SDI (normal) frames and MDI child windows must always have their
513toolbars managed by the application.
514
515\wxheading{See also}
516
517\helpref{wxMDIParentFrame::GetToolBar}{wxmdiparentframegettoolbar},\rtfsp
518\helpref{wxMDIParentFrame::GetClientSize}{wxmdiparentframegetclientsize}
519
520\membersection{wxMDIParentFrame::Tile}\label{wxmdiparentframetile}
521
522\func{void}{Tile}{\void}
523
524Tiles the MDI child windows.
525
526\wxheading{See also}
527
528\helpref{wxMDIParentFrame::Cascade}{wxmdiparentframecascade},\rtfsp
529\helpref{wxMDIParentFrame::ArrangeIcons}{wxmdiparentframearrangeicons}
530
531