]> git.saurik.com Git - wxWidgets.git/blame_incremental - docs/latex/wx/frame.tex
mention 'b' flag for wxFFile::Open
[wxWidgets.git] / docs / latex / wx / frame.tex
... / ...
CommitLineData
1\section{\class{wxFrame}}\label{wxframe}
2
3A frame is a window whose size and position can (usually) be changed by the
4user. It usually has thick borders and a title bar, and can optionally contain
5a menu bar, toolbar and status bar. A frame can contain any window that is not
6a frame or dialog.
7
8A frame that has a status bar and toolbar created via the
9CreateStatusBar/CreateToolBar functions manages these windows, and adjusts the
10value returned by GetClientSize to reflect the remaining size available to
11application windows.
12
13\wxheading{Derived from}
14
15\helpref{wxWindow}{wxwindow}\\
16\helpref{wxEvtHandler}{wxevthandler}\\
17\helpref{wxObject}{wxobject}
18
19\wxheading{Include files}
20
21<wx/frame.h>
22
23\wxheading{Window styles}
24
25\twocolwidtha{5cm}
26\begin{twocollist}\itemsep=0pt
27\twocolitem{\windowstyle{wxDEFAULT\_FRAME\_STYLE}}{Defined as {\bf wxMINIMIZE\_BOX \pipe wxMAXIMIZE\_BOX \pipe wxRESIZE\_BOX \pipe wxSYSTEM\_MENU \pipe wxCAPTION}.}
28\twocolitem{\windowstyle{wxICONIZE}}{Display the frame iconized (minimized). Windows only. }
29\twocolitem{\windowstyle{wxCAPTION}}{Puts a caption on the frame.}
30\twocolitem{\windowstyle{wxMINIMIZE}}{Identical to {\bf wxICONIZE}. Windows only.}
31\twocolitem{\windowstyle{wxMINIMIZE\_BOX}}{Displays a minimize box on the frame.}
32\twocolitem{\windowstyle{wxMAXIMIZE}}{Displays the frame maximized. Windows only.}
33\twocolitem{\windowstyle{wxMAXIMIZE\_BOX}}{Displays a maximize box on the frame.}
34\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{Stay on top of other windows. Windows only.}
35\twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Displays a system menu.}
36\twocolitem{\windowstyle{wxSIMPLE\_BORDER}}{Displays no border or decorations. GTK and Windows only.}
37\twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Displays a resizeable border around the window.}
38\twocolitem{\windowstyle{wxFRAME\_TOOL\_WINDOW}}{Causes a frame with a small
39titlebar to be created; the frame does not appear in the taskbar under Windows.}
40\twocolitem{\windowstyle{wxFRAME\_NO\_TASKBAR}}{Creates a normal frame but if
41this frame has a parent it does not appear in the taskbar under Windows. Note
42that a frame without parent will still appear in the taskbar even with this
43style. Has no effect under other platforms.}
44\twocolitem{\windowstyle{wxFRAME\_FLOAT\_ON\_PARENT}}{Unused any longer, use
45wxFRAME\_TOOL\_WINDOW or wxFRAME\_NO\_TASKBAR instead}
46\twocolitem{\windowstyle{wxFRAME\_EX\_CONTEXTHELP}}{Under Windows, puts a query button on the
47caption. When pressed, Windows will go into a context-sensitive help mode and wxWindows will send
48a wxEVT\_HELP event if the user clicked on an application window. {\it Note} that this is an extended
49style and must be set by calling \helpref{SetExtraStyle}{wxwindowsetextrastyle} before Create is called (two-step construction).
50You cannot use this style together with wxMAXIMIZE\_BOX or wxMINIMIZE\_BOX.}
51\end{twocollist}
52
53The default frame style is for normal, resizeable frames. To create a frame
54which can not be resized by user, you may use the following combination of
55styles: {\tt wxDEFAULT\_FRAME\_STYLE \& \~ (wxRESIZE\_BORDER \pipe wxRESIZE\_BOX \pipe wxMAXIMIZE\_BOX)}.
56% Note: the space after the tilde is necessary or Tex2RTF complains.
57
58See also \helpref{window styles overview}{windowstyles}.
59
60\wxheading{Remarks}
61
62An application should normally define an \helpref{OnCloseWindow}{wxwindowonclosewindow} handler for the
63frame to respond to system close events, for example so that related data and subwindows can be cleaned up.
64
65\wxheading{See also}
66
67\helpref{wxMDIParentFrame}{wxmdiparentframe}, \helpref{wxMDIChildFrame}{wxmdichildframe},\rtfsp
68\helpref{wxMiniFrame}{wxminiframe}, \helpref{wxDialog}{wxdialog}
69
70\latexignore{\rtfignore{\wxheading{Members}}}
71
72\membersection{wxFrame::wxFrame}\label{wxframeconstr}
73
74\func{}{wxFrame}{\void}
75
76Default constructor.
77
78\func{}{wxFrame}{\param{wxWindow* }{parent}, \param{wxWindowID }{id},\rtfsp
79\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp
80\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp
81\param{const wxString\& }{name = ``frame"}}
82
83Constructor, creating the window.
84
85\wxheading{Parameters}
86
87\docparam{parent}{The window parent. This may be NULL. If it is non-NULL, the frame will
88always be displayed on top of the parent window on Windows.}
89
90\docparam{id}{The window identifier. It may take a value of -1 to indicate a default value.}
91
92\docparam{title}{The caption to be displayed on the frame's title bar.}
93
94\docparam{pos}{The window position. A value of (-1, -1) indicates a default position, chosen by
95either the windowing system or wxWindows, depending on platform.}
96
97\docparam{size}{The window size. A value of (-1, -1) indicates a default size, chosen by
98either the windowing system or wxWindows, depending on platform.}
99
100\docparam{style}{The window style. See \helpref{wxFrame}{wxframe}.}
101
102\docparam{name}{The name of the window. This parameter is used to associate a name with the item,
103allowing the application user to set Motif resource values for
104individual windows.}
105
106\wxheading{Remarks}
107
108For Motif, MWM (the Motif Window Manager) should be running for any window styles to work
109(otherwise all styles take effect).
110
111\wxheading{See also}
112
113\helpref{wxFrame::Create}{wxframecreate}
114
115\membersection{wxFrame::\destruct{wxFrame}}
116
117\func{void}{\destruct{wxFrame}}{\void}
118
119Destructor. Destroys all child windows and menu bar if present.
120
121\membersection{wxFrame::Centre}\label{wxframecentre}
122
123\func{void}{Centre}{\param{int}{ direction = wxBOTH}}
124
125Centres the frame on the display.
126
127\wxheading{Parameters}
128
129\docparam{direction}{The parameter may be {\tt wxHORIZONTAL}, {\tt wxVERTICAL} or {\tt wxBOTH}.}
130
131\membersection{wxFrame::Command}\label{wxframecommand}
132
133\func{void}{Command}{\param{int }{id}}
134
135Simulate a menu command.
136
137\wxheading{Parameters}
138
139\docparam{id}{The identifier for a menu item.}
140
141\membersection{wxFrame::Create}\label{wxframecreate}
142
143\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id},\rtfsp
144\param{const wxString\& }{title}, \param{const wxPoint\&}{ pos = wxDefaultPosition},\rtfsp
145\param{const wxSize\&}{ size = wxDefaultSize}, \param{long}{ style = wxDEFAULT\_FRAME\_STYLE},\rtfsp
146\param{const wxString\& }{name = ``frame"}}
147
148Used in two-step frame construction. See \helpref{wxFrame::wxFrame}{wxframeconstr}\rtfsp
149for further details.
150
151\membersection{wxFrame::CreateStatusBar}\label{wxframecreatestatusbar}
152
153\func{virtual wxStatusBar*}{CreateStatusBar}{\param{int}{ number = 1},
154 \param{long}{ style = 0},
155 \param{wxWindowID}{ id = -1}, \param{const wxString\&}{ name = "statusBar"}}
156
157Creates a status bar at the bottom of the frame.
158
159\wxheading{Parameters}
160
161\docparam{number}{The number of fields to create. Specify a
162value greater than 1 to create a multi-field status bar.}
163
164\docparam{style}{The status bar style. See \helpref{wxStatusBar}{wxstatusbar} for a list
165of valid styles.}
166
167\docparam{id}{The status bar window identifier. If -1, an identifier will be chosen by
168wxWindows.}
169
170\docparam{name}{The status bar window name.}
171
172\wxheading{Return value}
173
174A pointer to the the status bar if it was created successfully, NULL otherwise.
175
176\wxheading{Remarks}
177
178The width of the status bar is the whole width of the frame (adjusted automatically when
179resizing), and the height and text size are chosen by the host windowing system.
180
181By default, the status bar is an instance of wxStatusBar. To use a different class,
182override \helpref{wxFrame::OnCreateStatusBar}{wxframeoncreatestatusbar}.
183
184Note that you can put controls and other windows on the status bar if you wish.
185
186\wxheading{See also}
187
188\helpref{wxFrame::SetStatusText}{wxframesetstatustext},\rtfsp
189\helpref{wxFrame::OnCreateStatusBar}{wxframeoncreatestatusbar},\rtfsp
190\helpref{wxFrame::GetStatusBar}{wxframegetstatusbar}
191
192\membersection{wxFrame::CreateToolBar}\label{wxframecreatetoolbar}
193
194\func{virtual wxToolBar*}{CreateToolBar}{\param{long}{ style = wxNO\_BORDER \pipe wxTB\_HORIZONTAL},
195 \param{wxWindowID}{ id = -1}, \param{const wxString\&}{ name = "toolBar"}}
196
197Creates a toolbar at the top or left of the frame.
198
199\wxheading{Parameters}
200
201\docparam{style}{The toolbar style. See \helpref{wxToolBar}{wxtoolbar} for a list
202of valid styles.}
203
204\docparam{id}{The toolbar window identifier. If -1, an identifier will be chosen by
205wxWindows.}
206
207\docparam{name}{The toolbar window name.}
208
209\wxheading{Return value}
210
211A pointer to the the toolbar if it was created successfully, NULL otherwise.
212
213\wxheading{Remarks}
214
215By default, the toolbar is an instance of wxToolBar (which is defined to be
216a suitable toolbar class on each platform, such as wxToolBar95). To use a different class,
217override \helpref{wxFrame::OnCreateToolBar}{wxframeoncreatetoolbar}.
218
219When a toolbar has been created with this function, or made known to the frame
220with \helpref{wxFrame::SetToolBar}{wxframesettoolbar}, the frame will manage the toolbar
221position and adjust the return value from \helpref{wxWindow::GetClientSize}{wxwindowgetclientsize} to
222reflect the available space for application windows.
223
224\wxheading{See also}
225
226\helpref{wxFrame::CreateStatusBar}{wxframecreatestatusbar},\rtfsp
227\helpref{wxFrame::OnCreateToolBar}{wxframeoncreatetoolbar},\rtfsp
228\helpref{wxFrame::SetToolBar}{wxframesettoolbar},\rtfsp
229\helpref{wxFrame::GetToolBar}{wxframegettoolbar}
230
231\membersection{wxFrame::GetClientAreaOrigin}\label{wxframegetclientareaorigin}
232
233\constfunc{wxPoint}{GetClientAreaOrigin}{\void}
234
235Returns the origin of the frame client area (in client coordinates). It may be
236different from (0, 0) if the frame has a toolbar.
237
238\membersection{wxFrame::GetMenuBar}\label{wxframegetmenubar}
239
240\constfunc{wxMenuBar*}{GetMenuBar}{\void}
241
242Returns a pointer to the menubar currently associated with the frame (if any).
243
244\wxheading{See also}
245
246\helpref{wxFrame::SetMenuBar}{wxframesetmenubar}, \helpref{wxMenuBar}{wxmenubar}, \helpref{wxMenu}{wxmenu}
247
248\membersection{wxFrame::GetStatusBar}\label{wxframegetstatusbar}
249
250\constfunc{wxStatusBar*}{GetStatusBar}{\void}
251
252Returns a pointer to the status bar currently associated with the frame (if any).
253
254\wxheading{See also}
255
256\helpref{wxFrame::CreateStatusBar}{wxframecreatestatusbar}, \helpref{wxStatusBar}{wxstatusbar}
257
258\membersection{wxFrame::GetTitle}\label{wxframegettitle}
259
260\constfunc{wxString}{GetTitle}{\void}
261
262Gets a string containing the frame title. See \helpref{wxFrame::SetTitle}{wxframesettitle}.
263
264\membersection{wxFrame::GetToolBar}\label{wxframegettoolbar}
265
266\constfunc{wxToolBar*}{GetToolBar}{\void}
267
268Returns a pointer to the toolbar currently associated with the frame (if any).
269
270\wxheading{See also}
271
272\helpref{wxFrame::CreateToolBar}{wxframecreatetoolbar}, \helpref{wxToolBar}{wxtoolbar},\rtfsp
273\helpref{wxFrame::SetToolBar}{wxframesettoolbar}
274
275\membersection{wxFrame::Iconize}\label{wxframeiconize}
276
277\func{void}{Iconize}{\param{bool}{ iconize}}
278
279Iconizes or restores the frame. Windows only.
280
281\wxheading{Parameters}
282
283\docparam{izonize}{If TRUE, iconizes the frame; if FALSE, shows and restores it.}
284
285\wxheading{See also}
286
287\helpref{wxFrame::IsIconized}{wxframeisiconized}, \helpref{wxFrame::Maximize}{wxframemaximize}.
288
289\membersection{wxFrame::IsIconized}\label{wxframeisiconized}
290
291\constfunc{bool}{IsIconized}{\void}
292
293Returns TRUE if the frame is iconized. Windows only.
294
295\membersection{wxFrame::IsMaximized}\label{wxframeismaximized}
296
297\constfunc{bool}{IsMaximized}{\void}
298
299Returns TRUE if the frame is maximized.
300
301\membersection{wxFrame::Maximize}\label{wxframemaximize}
302
303\func{void}{Maximize}{\param{bool }{maximize}}
304
305Maximizes or restores the frame.
306
307\wxheading{Parameters}
308
309\docparam{maximize}{If TRUE, maximizes the frame, otherwise it restores it.}
310
311\wxheading{Remarks}
312
313This function only works under Windows.
314
315\wxheading{See also}
316
317\helpref{wxFrame::Iconize}{wxframeiconize}
318
319\membersection{wxFrame::OnActivate}
320
321\func{void}{OnActivate}{\param{wxActivateEvent\&}{ event}}
322
323Called when a window is activated or deactivated (MS Windows
324only). See also \helpref{wxActivateEvent}{wxactivateevent}.
325
326\membersection{wxFrame::OnCreateStatusBar}\label{wxframeoncreatestatusbar}
327
328\func{virtual wxStatusBar*}{OnCreateStatusBar}{\param{int }{number},
329 \param{long}{ style},
330 \param{wxWindowID}{ id}, \param{const wxString\&}{ name}}
331
332Virtual function called when a status bar is requested by \helpref{wxFrame::CreateStatusBar}{wxframecreatestatusbar}.
333
334\wxheading{Parameters}
335
336\docparam{number}{The number of fields to create.}
337
338\docparam{style}{The window style. See \helpref{wxStatusBar}{wxstatusbar} for a list
339of valid styles.}
340
341\docparam{id}{The window identifier. If -1, an identifier will be chosen by
342wxWindows.}
343
344\docparam{name}{The window name.}
345
346\wxheading{Return value}
347
348A status bar object.
349
350\wxheading{Remarks}
351
352An application can override this function to return a different kind of status bar. The default
353implementation returns an instance of \helpref{wxStatusBar}{wxstatusbar}.
354
355\wxheading{See also}
356
357\helpref{wxFrame::CreateStatusBar}{wxframecreatestatusbar}, \helpref{wxStatusBar}{wxstatusbar}.
358
359\membersection{wxFrame::OnCreateToolBar}\label{wxframeoncreatetoolbar}
360
361\func{virtual wxToolBar*}{OnCreateToolBar}{\param{long}{ style},
362 \param{wxWindowID}{ id}, \param{const wxString\&}{ name}}
363
364Virtual function called when a toolbar is requested by \helpref{wxFrame::CreateToolBar}{wxframecreatetoolbar}.
365
366\wxheading{Parameters}
367
368\docparam{style}{The toolbar style. See \helpref{wxToolBar}{wxtoolbar} for a list
369of valid styles.}
370
371\docparam{id}{The toolbar window identifier. If -1, an identifier will be chosen by
372wxWindows.}
373
374\docparam{name}{The toolbar window name.}
375
376\wxheading{Return value}
377
378A toolbar object.
379
380\wxheading{Remarks}
381
382An application can override this function to return a different kind of toolbar. The default
383implementation returns an instance of \helpref{wxToolBar}{wxtoolbar}.
384
385\wxheading{See also}
386
387\helpref{wxFrame::CreateToolBar}{wxframecreatetoolbar}, \helpref{wxToolBar}{wxtoolbar}.
388
389\membersection{wxFrame::OnMenuCommand}\label{wxframeonmenucommand}
390
391\func{void}{OnMenuCommand}{\param{wxCommandEvent\&}{ event}}
392
393See \helpref{wxWindow::OnMenuCommand}{wxwindowonmenucommand}.
394
395\membersection{wxFrame::OnMenuHighlight}\label{wxframeonmenuhighlight}
396
397\func{void}{OnMenuHighlight}{\param{wxMenuEvent\&}{ event}}
398
399See \helpref{wxWindow::OnMenuHighlight}{wxwindowonmenuhighlight}.
400
401\membersection{wxFrame::OnSize}\label{wxframeonsize}
402
403\func{void}{OnSize}{\param{wxSizeEvent\& }{event}}
404
405See \helpref{wxWindow::OnSize}{wxwindowonsize}.
406
407The default {\bf wxFrame::OnSize} implementation looks for a single subwindow,
408and if one is found, resizes it to fit
409inside the frame. Override this member if more complex behaviour
410is required (for example, if there are several subwindows).
411
412\membersection{wxFrame::SetIcon}\label{wxframeseticon}
413
414\func{void}{SetIcon}{\param{const wxIcon\& }{icon}}
415
416Sets the icon for this frame.
417
418\wxheading{Parameters}
419
420\docparam{icon}{The icon to associate with this frame.}
421
422\wxheading{Remarks}
423
424The frame takes a `copy' of {\it icon}, but since it uses reference
425counting, the copy is very quick. It is safe to delete {\it icon} after
426calling this function.
427
428% VZ: we don't have all this any more (18.08.00)
429%
430%Under Windows, instead of using {\bf SetIcon}, you can add the
431%following lines to your MS Windows resource file:
432%
433%\begin{verbatim}
434%wxSTD_MDIPARENTFRAME ICON icon1.ico
435%wxSTD_MDICHILDFRAME ICON icon2.ico
436%wxSTD_FRAME ICON icon3.ico
437%\end{verbatim}
438%
439%where icon1.ico will be used for the MDI parent frame, icon2.ico
440%will be used for MDI child frames, and icon3.ico will be used for
441%non-MDI frames.
442%
443%If these icons are not supplied, and {\bf SetIcon} is not called either,
444%then the following defaults apply if you have included wx.rc.
445%
446%\begin{verbatim}
447%wxDEFAULT_FRAME ICON std.ico
448%wxDEFAULT_MDIPARENTFRAME ICON mdi.ico
449%wxDEFAULT_MDICHILDFRAME ICON child.ico
450%\end{verbatim}
451%
452%You can replace std.ico, mdi.ico and child.ico with your own defaults
453%for all your wxWindows application. Currently they show the same icon.
454
455See also \helpref{wxIcon}{wxicon}.
456
457\membersection{wxFrame::SetMenuBar}\label{wxframesetmenubar}
458
459\func{void}{SetMenuBar}{\param{wxMenuBar* }{menuBar}}
460
461Tells the frame to show the given menu bar.
462
463\wxheading{Parameters}
464
465\docparam{menuBar}{The menu bar to associate with the frame.}
466
467\wxheading{Remarks}
468
469If the frame is destroyed, the
470menu bar and its menus will be destroyed also, so do not delete the menu
471bar explicitly (except by resetting the frame's menu bar to another
472frame or NULL).
473
474Under Windows, a call to \helpref{wxFrame::OnSize}{wxframeonsize} is generated, so be sure to initialize
475data members properly before calling {\bf SetMenuBar}.
476
477Note that it is not possible to call this function twice for the same frame object.
478
479\wxheading{See also}
480
481\helpref{wxFrame::GetMenuBar}{wxframegetmenubar}, \helpref{wxMenuBar}{wxmenubar}, \helpref{wxMenu}{wxmenu}.
482
483\membersection{wxFrame::SetStatusBar}\label{wxframesetstatusbar}
484
485\func{void}{SetStatusBar}{\param{wxStatusBar*}{ statusBar}}
486
487Associates a status bar with the frame.
488
489\wxheading{See also}
490
491\helpref{wxFrame::CreateStatusBar}{wxframecreatestatusbar}, \helpref{wxStatusBar}{wxstatusbar},\rtfsp
492\helpref{wxFrame::GetStatusBar}{wxframegetstatusbar}
493
494\membersection{wxFrame::SetStatusText}\label{wxframesetstatustext}
495
496\func{virtual void}{SetStatusText}{\param{const wxString\& }{ text}, \param{int}{ number = 0}}
497
498Sets the status bar text and redraws the status bar.
499
500\wxheading{Parameters}
501
502\docparam{text}{The text for the status field.}
503
504\docparam{number}{The status field (starting from zero).}
505
506\wxheading{Remarks}
507
508Use an empty string to clear the status bar.
509
510\wxheading{See also}
511
512\helpref{wxFrame::CreateStatusBar}{wxframecreatestatusbar}, \helpref{wxStatusBar}{wxstatusbar}
513
514\membersection{wxFrame::SetStatusWidths}\label{wxframesetstatuswidths}
515
516\func{virtual void}{SetStatusWidths}{\param{int}{ n}, \param{int *}{widths}}
517
518Sets the widths of the fields in the status bar.
519
520\wxheading{Parameters}
521
522\wxheading{n}{The number of fields in the status bar. It must be the
523same used in \helpref{CreateStatusBar}{wxframecreatestatusbar}.}
524
525\docparam{widths}{Must contain an array of {\it n} integers, each of which is a status field width
526in pixels. A value of -1 indicates that the field is variable width; at least one
527field must be -1. You should delete this array after calling {\bf SetStatusWidths}.}
528
529\wxheading{Remarks}
530
531The widths of the variable fields are calculated from the total width of all fields,
532minus the sum of widths of the non-variable fields, divided by the number of
533variable fields.
534
535\pythonnote{Only a single parameter is required, a Python list of
536integers.}
537
538\membersection{wxFrame::SetToolBar}\label{wxframesettoolbar}
539
540\func{void}{SetToolBar}{\param{wxToolBar*}{ toolBar}}
541
542Associates a toolbar with the frame.
543
544\wxheading{See also}
545
546\helpref{wxFrame::CreateToolBar}{wxframecreatetoolbar}, \helpref{wxToolBar}{wxtoolbar},\rtfsp
547\helpref{wxFrame::GetToolBar}{wxframegettoolbar}
548
549\membersection{wxFrame::SetTitle}\label{wxframesettitle}
550
551\func{virtual void}{SetTitle}{\param{const wxString\& }{ title}}
552
553Sets the frame title.
554
555\wxheading{Parameters}
556
557\docparam{title}{The frame title.}
558
559\wxheading{See also}
560
561\helpref{wxFrame::GetTitle}{wxframegettitle}
562
563\membersection{wxFrame::ShowFullScreen}\label{wxframeshowfullscreen}
564
565\func{bool}{ShowFullScreen}{\param{bool}{ show}, \param{long}{ style = wxFULLSCREEN\_ALL}}
566
567Passing TRUE to {\it shows} shows the frame full-screen, and passing FALSE restores the frame
568again. {\it style} is a bit list containing some or all of the following values, which
569indicate what elements of the frame to hide in full-screen mode:
570
571\begin{itemize}\itemsep=0pt
572\item wxFULLSCREEN\_NOMENUBAR
573\item wxFULLSCREEN\_NOTOOLBAR
574\item wxFULLSCREEN\_NOSTATUSBAR
575\item wxFULLSCREEN\_NOBORDER
576\item wxFULLSCREEN\_NOCAPTION
577\item wxFULLSCREEN\_ALL (all of the above)
578\end{itemize}
579
580This function only works on Windows and has not been tested with MDI frames.
581