X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/81d66cf39f810503baed79213bc3122fda0ccc7b..d1853d4765d02a9842c7a8721ef2329d09429262:/docs/latex/wx/frame.tex diff --git a/docs/latex/wx/frame.tex b/docs/latex/wx/frame.tex index 71f2df8904..950fe6da08 100644 --- a/docs/latex/wx/frame.tex +++ b/docs/latex/wx/frame.tex @@ -1,12 +1,14 @@ \section{\class{wxFrame}}\label{wxframe} -A frame is a window whose size and position can (usually) be changed by the user. It usually has -thick borders and a title bar, and can optionally contain a menu bar, toolbar and -status bar. A frame can contain any window that is not a frame or dialog. +A frame is a window whose size and position can (usually) be changed by the +user. It usually has thick borders and a title bar, and can optionally contain +a menu bar, toolbar and status bar. A frame can contain any window that is not +a frame or dialog. -A frame that has a status bar and toolbar created via the CreateStatusBar/CreateToolBar functions -manages these windows, and adjusts the value returned by GetClientSize to reflect -the remaining size available to application windows. +A frame that has a status bar and toolbar created via the +CreateStatusBar/CreateToolBar functions manages these windows, and adjusts the +value returned by GetClientSize to reflect the remaining size available to +application windows. \wxheading{Derived from} @@ -14,28 +16,54 @@ the remaining size available to application windows. \helpref{wxEvtHandler}{wxevthandler}\\ \helpref{wxObject}{wxobject} +\wxheading{Include files} + + + \wxheading{Window styles} \twocolwidtha{5cm} \begin{twocollist}\itemsep=0pt -\twocolitem{\windowstyle{wxICONIZE}}{Display the frame iconized (minimized) (Windows only).} +\twocolitem{\windowstyle{wxDEFAULT\_FRAME\_STYLE}}{Defined as {\bf wxMINIMIZE\_BOX \pipe wxMAXIMIZE\_BOX \pipe wxRESIZE\_BORDER \pipe wxSYSTEM\_MENU \pipe wxCAPTION}.} +\twocolitem{\windowstyle{wxICONIZE}}{Display the frame iconized (minimized). Windows only. } \twocolitem{\windowstyle{wxCAPTION}}{Puts a caption on the frame.} -\twocolitem{\windowstyle{wxDEFAULT\_FRAME\_STYLE}}{Defined as {\bf wxMINIMIZE\_BOX \pipe wxMAXIMIZE\_BOX \pipe wxTHICK\_FRAME \pipe wxSYSTEM\_MENU \pipe wxCAPTION}.} -\twocolitem{\windowstyle{wxMINIMIZE}}{Identical to {\bf wxICONIZE}.} -\twocolitem{\windowstyle{wxMINIMIZE\_BOX}}{Displays a minimize box on the frame (Windows and Motif only).} -\twocolitem{\windowstyle{wxMAXIMIZE}}{Displays the frame maximized (Windows only).} -\twocolitem{\windowstyle{wxMAXIMIZE\_BOX}}{Displays a maximize box on the frame (Windows and Motif only).} -\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{Stay on top of other windows (Windows only).} -\twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Displays a system menu (Windows and Motif only).} -\twocolitem{\windowstyle{wxTHICK\_FRAME}}{Displays a thick frame around the window (Windows and Motif only).} -\twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Displays a resizeable border around the window (Motif only).} +\twocolitem{\windowstyle{wxMINIMIZE}}{Identical to {\bf wxICONIZE}. Windows only.} +\twocolitem{\windowstyle{wxMINIMIZE\_BOX}}{Displays a minimize box on the frame.} +\twocolitem{\windowstyle{wxMAXIMIZE}}{Displays the frame maximized. Windows only.} +\twocolitem{\windowstyle{wxMAXIMIZE\_BOX}}{Displays a maximize box on the frame.} +\twocolitem{\windowstyle{wxSTAY\_ON\_TOP}}{Stay on top of other windows. Windows only.} +\twocolitem{\windowstyle{wxSYSTEM\_MENU}}{Displays a system menu.} +\twocolitem{\windowstyle{wxSIMPLE\_BORDER}}{Displays no border or decorations. GTK and Windows only.} +\twocolitem{\windowstyle{wxRESIZE\_BORDER}}{Displays a resizeable border around the window.} +\twocolitem{\windowstyle{wxFRAME\_TOOL\_WINDOW}}{Causes a frame with a small +titlebar to be created; the frame does not appear in the taskbar under Windows.} +\twocolitem{\windowstyle{wxFRAME\_NO\_TASKBAR}}{Creates a normal frame but if +this frame has a parent it does not appear in the taskbar under Windows. Note +that a frame without parent will still appear in the taskbar even with this +style. Has no effect under other platforms.} +\twocolitem{\windowstyle{wxFRAME\_FLOAT\_ON\_PARENT}}{Unused any longer, use +wxFRAME\_TOOL\_WINDOW or wxFRAME\_NO\_TASKBAR instead} +\twocolitem{\windowstyle{wxFRAME\_EX\_CONTEXTHELP}}{Under Windows, puts a query button on the +caption. When pressed, Windows will go into a context-sensitive help mode and wxWindows will send +a wxEVT\_HELP event if the user clicked on an application window. {\it Note} that this is an extended +style and must be set by calling \helpref{SetExtraStyle}{wxwindowsetextrastyle} before Create is called (two-step construction). +You cannot use this style together with wxMAXIMIZE\_BOX or wxMINIMIZE\_BOX, so +you should use +{\tt wxDEFAULT\_FRAME\_STYLE \& \~ (wxMINIMIZE\_BOX | wxMAXIMIZE\_BOX)} for the +frames having this style (the dialogs don't have minimize nor maximize box by +default)} \end{twocollist} +The default frame style is for normal, resizeable frames. To create a frame +which can not be resized by user, you may use the following combination of +styles: {\tt wxDEFAULT\_FRAME\_STYLE \& \~ (wxRESIZE\_BORDER \pipe wxRESIZE\_BOX \pipe wxMAXIMIZE\_BOX)}. +% Note: the space after the tilde is necessary or Tex2RTF complains. + See also \helpref{window styles overview}{windowstyles}. \wxheading{Remarks} -An application should normally define an \helpref{OnCloseWindow}{wxwindowonclosewindow} handler for the +An application should normally define an \helpref{wxCloseEvent}{wxcloseevent} handler for the frame to respond to system close events, for example so that related data and subwindows can be cleaned up. \wxheading{See also} @@ -204,6 +232,13 @@ reflect the available space for application windows. \helpref{wxFrame::SetToolBar}{wxframesettoolbar},\rtfsp \helpref{wxFrame::GetToolBar}{wxframegettoolbar} +\membersection{wxFrame::GetClientAreaOrigin}\label{wxframegetclientareaorigin} + +\constfunc{wxPoint}{GetClientAreaOrigin}{\void} + +Returns the origin of the frame client area (in client coordinates). It may be +different from (0, 0) if the frame has a toolbar. + \membersection{wxFrame::GetMenuBar}\label{wxframegetmenubar} \constfunc{wxMenuBar*}{GetMenuBar}{\void} @@ -216,7 +251,7 @@ Returns a pointer to the menubar currently associated with the frame (if any). \membersection{wxFrame::GetStatusBar}\label{wxframegetstatusbar} -\func{wxStatusBar*}{GetStatusBar}{\void} +\constfunc{wxStatusBar*}{GetStatusBar}{\void} Returns a pointer to the status bar currently associated with the frame (if any). @@ -226,14 +261,13 @@ Returns a pointer to the status bar currently associated with the frame (if any) \membersection{wxFrame::GetTitle}\label{wxframegettitle} -\func{wxString\&}{GetTitle}{\void} +\constfunc{wxString}{GetTitle}{\void} -Gets a temporary pointer to the frame title. See -\helpref{wxFrame::SetTitle}{wxframesettitle}. +Gets a string containing the frame title. See \helpref{wxFrame::SetTitle}{wxframesettitle}. \membersection{wxFrame::GetToolBar}\label{wxframegettoolbar} -\func{wxToolBar*}{GetToolBar}{\void} +\constfunc{wxToolBar*}{GetToolBar}{\void} Returns a pointer to the toolbar currently associated with the frame (if any). @@ -244,7 +278,7 @@ Returns a pointer to the toolbar currently associated with the frame (if any). \membersection{wxFrame::Iconize}\label{wxframeiconize} -\func{void}{Iconize}{\param{const bool}{ iconize}} +\func{void}{Iconize}{\param{bool}{ iconize}} Iconizes or restores the frame. @@ -256,58 +290,37 @@ Iconizes or restores the frame. \helpref{wxFrame::IsIconized}{wxframeisiconized}, \helpref{wxFrame::Maximize}{wxframemaximize}. -\membersection{wxFrame::IsIconized}\label{wxframeisiconized} - -\func{bool}{IsIconized}{\void} - -Returns TRUE if the frame is iconized. - -\membersection{wxFrame::LoadAccelerators}\label{wxframeloadaccelerators} +\membersection{wxFrame::IsFullScreen}\label{wxframeisfullscreen} -\func{void}{LoadAccelerators}{\param{const wxString\& }{table}} +\func{bool}{IsFullScreen}{\void} -Loads a keyboard accelerator table for this frame. +Returns TRUE if the frame is in fullscreen mode. -\wxheading{Parameters} - -\docparam{table}{Accelerator table to load.} - -\wxheading{Return value} - -TRUE if the operation was successful, FALSE otherwise. - -\wxheading{Remarks} - -Accelerator tables map keystrokes onto control and menu identifiers, so the -programmer does not have to explicitly program this correspondence. +\wxheading{See also} -See the hello demo ({\tt hello.cpp} and {\tt hello.rc}) for -an example of accelerator usage. This is a fragment from {\tt hello.rc}: +\helpref{wxFrame::ShowFullScreen}{wxframeshowfullscreen} -\begin{verbatim} -#define HELLO_LOAD_FILE 111 +\membersection{wxFrame::IsIconized}\label{wxframeisiconized} -menus_accel ACCELERATORS -{ +\constfunc{bool}{IsIconized}{\void} -"^L", HELLO_LOAD_FILE +Returns TRUE if the frame is iconized. -} -\end{verbatim} +\membersection{wxFrame::IsMaximized}\label{wxframeismaximized} -This function only works under Windows. +\constfunc{bool}{IsMaximized}{\void} -% huh? If you call LoadAccelerators, you need to override wxFrame::OnActivate to do nothing. +Returns TRUE if the frame is maximized. \membersection{wxFrame::Maximize}\label{wxframemaximize} -\func{void}{Maximize}{\param{const bool }{maximize}} +\func{void}{Maximize}{\param{bool }{maximize}} Maximizes or restores the frame. \wxheading{Parameters} -\docparam{maximize}{If TRUE, maximizes the frame, otherwise it restores it}. +\docparam{maximize}{If TRUE, maximizes the frame, otherwise it restores it.} \wxheading{Remarks} @@ -319,21 +332,14 @@ This function only works under Windows. \membersection{wxFrame::OnActivate} -\func{void}{OnActivate}{\param{bool}{ active}} +\func{void}{OnActivate}{\param{wxActivateEvent\&}{ event}} Called when a window is activated or deactivated (MS Windows -only). If the window is being activated, {\it active} is TRUE, else it -is FALSE. - -If you call wxFrame::LoadAccelerators, you need to override this function e.g. - -\begin{verbatim} - void OnActivate(bool) {}; -\end{verbatim} +only). See also \helpref{wxActivateEvent}{wxactivateevent}. \membersection{wxFrame::OnCreateStatusBar}\label{wxframeoncreatestatusbar} -\func{virtual wxStatusBar*}{OnCreateStatusBar}{\param{int }{number} +\func{virtual wxStatusBar*}{OnCreateStatusBar}{\param{int }{number}, \param{long}{ style}, \param{wxWindowID}{ id}, \param{const wxString\&}{ name}} @@ -394,29 +400,26 @@ implementation returns an instance of \helpref{wxToolBar}{wxtoolbar}. \helpref{wxFrame::CreateToolBar}{wxframecreatetoolbar}, \helpref{wxToolBar}{wxtoolbar}. -\membersection{wxFrame::OnMenuCommand}\label{wxframeonmenucommand} - -\func{void}{OnMenuCommand}{\param{wxCommandEvent\&}{ event}} - -See \helpref{wxWindow::OnMenuCommand}{wxwindowonmenucommand}. - \membersection{wxFrame::OnMenuHighlight}\label{wxframeonmenuhighlight} \func{void}{OnMenuHighlight}{\param{wxMenuEvent\&}{ event}} -See \helpref{wxWindow::OnMenuHighlight}{wxwindowonmenuhighlight}. +The default implementation displays an appropriate help string +in the status bar, if there is one. + +See \helpref{wxMenuEvent}{wxmenuevent}. \membersection{wxFrame::OnSize}\label{wxframeonsize} \func{void}{OnSize}{\param{wxSizeEvent\& }{event}} -See \helpref{wxWindow::OnSize}{wxwindowonsize}. - The default {\bf wxFrame::OnSize} implementation looks for a single subwindow, and if one is found, resizes it to fit inside the frame. Override this member if more complex behaviour is required (for example, if there are several subwindows). +See \helpref{wxSizeEvent}{wxsizeevent}. + \membersection{wxFrame::SetIcon}\label{wxframeseticon} \func{void}{SetIcon}{\param{const wxIcon\& }{icon}} @@ -433,38 +436,46 @@ The frame takes a `copy' of {\it icon}, but since it uses reference counting, the copy is very quick. It is safe to delete {\it icon} after calling this function. -Under Windows, instead of using {\bf SetIcon}, you can add the -following lines to your MS Windows resource file: - -\begin{verbatim} -wxSTD_MDIPARENTFRAME ICON icon1.ico -wxSTD_MDICHILDFRAME ICON icon2.ico -wxSTD_FRAME ICON icon3.ico -\end{verbatim} +See also \helpref{wxIcon}{wxicon}. -where icon1.ico will be used for the MDI parent frame, icon2.ico -will be used for MDI child frames, and icon3.ico will be used for -non-MDI frames. +\membersection{wxFrame::SetIcons}\label{wxframeseticons} -If these icons are not supplied, and {\bf SetIcon} is not called either, -then the following defaults apply if you have included wx.rc. +\func{void}{SetIcons}{\param{const wxIconBundle\& }{icons}} -\begin{verbatim} -wxDEFAULT_FRAME ICON std.ico -wxDEFAULT_MDIPARENTFRAME ICON mdi.ico -wxDEFAULT_MDICHILDFRAME ICON child.ico -\end{verbatim} +Sets the icons for this frame. -You can replace std.ico, mdi.ico and child.ico with your own defaults -for all your wxWindows application. Currently they show the same icon. +\wxheading{Parameters} -{\it Note:} a wxWindows application linked with subsystem equal to 4.0 -(i.e. marked as a Windows 95 application) doesn't respond properly -to wxFrame::SetIcon. To work around this until a solution is found, -mark your program as a 3.5 application. This will also ensure -that Windows provides small icons for the application automatically. - -See also \helpref{wxIcon}{wxicon}. +\docparam{icons}{The icons to associate with this frame.} + +See also \helpref{wxIconBundle}{wxiconbundle}. + +% VZ: we don't have all this any more (18.08.00) +% +%Under Windows, instead of using {\bf SetIcon}, you can add the +%following lines to your MS Windows resource file: +% +%\begin{verbatim} +%wxSTD_MDIPARENTFRAME ICON icon1.ico +%wxSTD_MDICHILDFRAME ICON icon2.ico +%wxSTD_FRAME ICON icon3.ico +%\end{verbatim} +% +%where icon1.ico will be used for the MDI parent frame, icon2.ico +%will be used for MDI child frames, and icon3.ico will be used for +%non-MDI frames. +% +%If these icons are not supplied, and {\bf SetIcon} is not called either, +%then the following defaults apply if you have included wx.rc. +% +%\begin{verbatim} +%wxDEFAULT_FRAME ICON std.ico +%wxDEFAULT_MDIPARENTFRAME ICON mdi.ico +%wxDEFAULT_MDICHILDFRAME ICON child.ico +%\end{verbatim} +% +%You can replace std.ico, mdi.ico and child.ico with your own defaults +%for all your wxWindows application. Currently they show the same icon. \membersection{wxFrame::SetMenuBar}\label{wxframesetmenubar} @@ -541,9 +552,14 @@ field must be -1. You should delete this array after calling {\bf SetStatusWidth \wxheading{Remarks} The widths of the variable fields are calculated from the total width of all fields, -minus the sum of widths of the non-variable fields, divided by the number of +minus the sum of widths of the non-variable fields, divided by the number of variable fields. +\pythonnote{Only a single parameter is required, a Python list of +integers.} + +\perlnote{In wxPerl this method takes the field widths as parameters.} + \membersection{wxFrame::SetToolBar}\label{wxframesettoolbar} \func{void}{SetToolBar}{\param{wxToolBar*}{ toolBar}} @@ -569,3 +585,26 @@ Sets the frame title. \helpref{wxFrame::GetTitle}{wxframegettitle} +\membersection{wxFrame::ShowFullScreen}\label{wxframeshowfullscreen} + +\func{bool}{ShowFullScreen}{\param{bool}{ show}, \param{long}{ style = wxFULLSCREEN\_ALL}} + +Passing TRUE to {\it shows} shows the frame full-screen, and passing FALSE restores the frame +again. {\it style} is a bit list containing some or all of the following values, which +indicate what elements of the frame to hide in full-screen mode: + +\begin{itemize}\itemsep=0pt +\item wxFULLSCREEN\_NOMENUBAR +\item wxFULLSCREEN\_NOTOOLBAR +\item wxFULLSCREEN\_NOSTATUSBAR +\item wxFULLSCREEN\_NOBORDER +\item wxFULLSCREEN\_NOCAPTION +\item wxFULLSCREEN\_ALL (all of the above) +\end{itemize} + +This function has not been tested with MDI frames. + +\wxheading{See also} + +\helpref{wxFrame::IsFullScreen}{wxframeisfullscreen} +