]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/window.tex
tried to make wxCloseEvent docs more clear too
[wxWidgets.git] / docs / latex / wx / window.tex
index fb3a4c3fba45104ce7421c924015322d7105847d..76f11e0a4779b7f1726a013b60b11cb2e23c5e29 100644 (file)
@@ -3,13 +3,13 @@
 wxWindow is the base class for all windows. Any children of the window will be deleted
 automatically by the destructor before the window itself is deleted.
 
-Please note that we documented a number of handler functions (OnChar(), OnMouse() etc.) in this
-help text. These must not be called by a user program and are documented only for illustration.
-On several platforms, only a few of these handlers are actually written (they are not always
-needed) and if you are uncertain on how to add a certain behaviour to a window class, intercept
-the respective event as usual and call \helpref{wxEvent::Skip}{wxeventskip} so that the native
-platform can implement its native behaviour or just ignore the event if nothing needs to be
-done.
+%Please note that we documented a number of handler functions (OnChar(), OnMouse() etc.) in this
+%help text. These must not be called by a user program and are documented only for illustration.
+%On several platforms, only a few of these handlers are actually written (they are not always
+%needed) and if you are uncertain on how to add a certain behaviour to a window class, intercept
+%the respective event as usual and call \helpref{wxEvent::Skip}{wxeventskip} so that the native
+%platform can implement its native behaviour or just ignore the event if nothing needs to be
+%done.
 
 \wxheading{Derived from}
 
@@ -46,8 +46,8 @@ this style}
 the window completely when its size is changed - you will have to repaint the
 new window area manually if you use this style. Currently only has an effect for
 Windows.}
-\twocolitem{\windowstyle{wxVSCROLL}}{Use this style to enable a vertical scrollbar. (Still used?) }
-\twocolitem{\windowstyle{wxHSCROLL}}{Use this style to enable a horizontal scrollbar. (Still used?) }
+\twocolitem{\windowstyle{wxVSCROLL}}{Use this style to enable a vertical scrollbar.}
+\twocolitem{\windowstyle{wxHSCROLL}}{Use this style to enable a horizontal scrollbar.}
 \twocolitem{\windowstyle{wxCLIP\_CHILDREN}}{Use this style to eliminate flicker caused by the background being
 repainted, then children being painted over them. Windows only.}
 \end{twocollist}
@@ -254,10 +254,11 @@ implements the following methods:\par
 
 \membersection{wxWindow::Close}\label{wxwindowclose}
 
-\func{virtual bool}{Close}{\param{bool}{ force = {\tt FALSE}}}
+\func{bool}{Close}{\param{bool}{ force = {\tt FALSE}}}
 
-The purpose of this call is to provide a safer way of destroying a window than using
-the {\it delete} operator.
+This function simply generates a \helpref{wxCloseEvent}{wxcloseevent} whose
+handler usually tries to close the window. It doesn't close the window itself,
+however.
 
 \wxheading{Parameters}
 
@@ -266,22 +267,24 @@ of this window, {\tt TRUE} if it cannot.}
 
 \wxheading{Remarks}
 
-Close calls the \helpref{close handler}{wxcloseevent} for the window, providing an opportunity for the window to
-choose whether to destroy the window.
+Close calls the \helpref{close handler}{wxcloseevent} for the window, providing
+an opportunity for the window to choose whether to destroy the window.
+Usually it is only used with the top level windows (wxFrame and wxDialog
+classes) as the others are not supposed to have any special OnClose() logic.
 
 The close handler should check whether the window is being deleted forcibly,
-using \helpref{wxCloseEvent::GetForce}{wxcloseeventgetforce}, in which case it should
-destroy the window using \helpref{wxWindow::Destroy}{wxwindowdestroy}.
+using \helpref{wxCloseEvent::GetForce}{wxcloseeventgetforce}, in which case it
+should destroy the window using \helpref{wxWindow::Destroy}{wxwindowdestroy}.
 
-Applies to managed windows (wxFrame and wxDialog classes) only.
+{\it Note} that calling Close does not guarantee that the window will be
+destroyed; but it provides a way to simulate a manual close of a window, which
+may or may not be implemented by destroying the window. The default
+implementation of wxDialog::OnCloseWindow does not necessarily delete the
+dialog, since it will simply simulate an wxID\_CANCEL event which is handled by
+the appropriate button event handler and may do anything at all.
 
-{\it Note} that calling Close does not guarantee that the window will be destroyed; but it
-provides a way to simulate a manual close of a window, which may or may not be implemented by
-destroying the window. The default implementation of wxDialog::OnCloseWindow does not
-necessarily delete the dialog, since it will simply simulate an wxID\_CANCEL event which
-itself only hides the dialog.
-
-To guarantee that the window will be destroyed, call \helpref{wxWindow::Destroy}{wxwindowdestroy} instead.
+To guarantee that the window will be destroyed, call 
+\helpref{wxWindow::Destroy}{wxwindowdestroy} instead
 
 \wxheading{See also}
 
@@ -375,7 +378,7 @@ implements the following methods:\par
 
 Destroys the window safely. Use this function instead of the delete operator, since
 different window classes can be destroyed differently. Frames and dialogs
-are not destroyed immediately when this function is called - they are added
+are not destroyed immediately when this function is called -- they are added
 to a list of windows to be deleted on idle time, when all the window's events
 have been processed. This prevents problems with events being sent to non-existent
 windows.
@@ -421,7 +424,9 @@ Windows only.
 
 \func{virtual bool}{Enable}{\param{bool}{ enable = {\tt TRUE}}}
 
-Enable or disable the window for user input.
+Enable or disable the window for user input. Note that when a parent window is
+disabled, all of its children are disabled as well and they are reenabled again
+when the parent is.
 
 \wxheading{Parameters}
 
@@ -519,6 +524,16 @@ The search is recursive in both cases.
 Sizes the window so that it fits around its subwindows. This function won't do
 anything if there are no subwindows.
 
+\membersection{wxWindow::FitInside}\label{wxwindowfitinside}
+
+\func{virtual void}{FitInside}{\void}
+
+Similar to \helpref{Fit}{wxwindowfit}, but sizes the interior (virtual) size
+of a window.  Mainly useful with scrolled windows to reset scrollbars after
+sizing changes that do not trigger a size event, and/or scrolled windows without
+an interior sizer.  This function similarly won't do anything if there are no
+subwindows.
+
 \membersection{wxWindow::Freeze}\label{wxwindowfreeze}
 
 \func{virtual void}{Freeze}{\void}
@@ -533,6 +548,16 @@ wxTextCtrl under wxGTK) but is not implemented on all platforms nor for all
 controls so it is mostly just a hint to wxWindows and not a mandatory
 directive.
 
+\membersection{wxWindow::GetAdjustedBestSize}\label{wxwindowgetadjustedbestsize}
+
+\constfunc{wxSize}{GetAdjustedBestSize}{\void}
+
+This method is similar to \helpref{GetBestSize}{wxwindowgetbestsize}, except
+in one thing.  GetBestSize should return the minimum untruncated size of the
+window, while this method will return the largest of BestSize and any user
+specified minimum size.  ie. it is the minimum size the window should currently
+be drawn at, not the minimal size it can possibly tolerate.
+
 \membersection{wxWindow::GetBackgroundColour}\label{wxwindowgetbackgroundcolour}
 
 \constfunc{virtual wxColour}{GetBackgroundColour}{\void}
@@ -713,6 +738,8 @@ handle, such as {\bf HWND} for Windows, {\bf Widget} for Motif or {\bf GtkWidget
 
 \pythonnote{This method will return an integer in wxPython.}
 
+\perlnote{This method will return an integer in wxPerl.}
+
 \membersection{wxWindow::GetHelpText}\label{wxwindowgethelptext}
 
 \constfunc{virtual wxString}{GetHelpText}{\void}
@@ -1070,8 +1097,8 @@ window).
 Invokes the constraint-based layout algorithm or the sizer-based algorithm
 for this window.
 
-See \helpref{wxWindow::SetAutoLayout}{wxwindowsetautolayout} on when
-this function gets called automatically using auto layout.
+See \helpref{wxWindow::SetAutoLayout}{wxwindowsetautolayout}: when auto
+layout is on, this function gets called automatically when the window is resized.
 
 \membersection{wxWindow::LoadFromResource}\label{wxwindowloadfromresource}
 
@@ -1755,6 +1782,19 @@ erased.}
 \docparam{rect}{If non-NULL, only the given rectangle will
 be treated as damaged.}
 
+\wxheading{See also}
+
+\helpref{wxWindow::RefreshRect}{wxwindowrefreshrect}
+
+\membersection{wxWindow::RefreshRect}\label{wxwindowrefreshrect}
+
+\func{virtual void}{Refresh}{\param{const wxRect\& }{rect}}
+
+Redraws the contents of the given rectangle: the area inside it will be
+repainted.
+
+This is the same as \helpref{Refresh}{wxwindowrefresh} but has a nicer syntax.
+
 \membersection{wxWindow::ReleaseMouse}\label{wxwindowreleasemouse}
 
 \func{virtual void}{ReleaseMouse}{\void}
@@ -1914,10 +1954,11 @@ Sets the accelerator table for this window. See \helpref{wxAcceleratorTable}{wxa
 \func{void}{SetAutoLayout}{\param{bool}{ autoLayout}}
 
 Determines whether the \helpref{wxWindow::Layout}{wxwindowlayout} function will
-be called automatically when the window is resized. Use in connection with
-\helpref{wxWindow::SetSizer}{wxwindowsetsizer} and
-\helpref{wxWindow::SetConstraints}{wxwindowsetconstraints} for laying out
-subwindows.
+be called automatically when the window is resized. It is called implicitly by 
+\helpref{wxWindow::SetSizer}{wxwindowsetsizer} but if you use 
+\helpref{wxWindow::SetConstraints}{wxwindowsetconstraints} you should call it
+manually or otherwise the window layout won't be correctly updated when its
+size changes.
 
 \wxheading{Parameters}
 
@@ -2481,6 +2522,10 @@ will then own the object, and will take care of its deletion.
 If an existing layout constraints object is already owned by the
 window, it will be deleted if the deleteOld parameter is TRUE.
 
+Note that this function will also call 
+\helpref{SetAutoLayout}{wxwindowsetautolayout} implicitly with {\tt TRUE}
+parameter if the {\it sizer}\/ is non-NULL and {\tt FALSE} otherwise.
+
 \wxheading{Parameters}
 
 \docparam{sizer}{The sizer to set. Pass NULL to disassociate and conditionally delete
@@ -2673,6 +2718,17 @@ Returns {\tt FALSE} if a transfer failed.
 \helpref{wxWindow::TransferDataFromWindow}{wxwindowtransferdatafromwindow},\rtfsp
 \helpref{wxValidator}{wxvalidator}, \helpref{wxWindow::Validate}{wxwindowvalidate}
 
+\membersection{wxWindow::Update}\label{wxwindowupdate}
+
+\func{virtual void}{Update}{\void}
+
+Calling this method immediately repaints the invalidated area of the window
+while this would usually only happen when the flow of control returns to the
+event loop. Notice that this function doesn't refresh the window and does
+nothing if the window hadn't been already repainted. Use 
+\helpref{Refresh}{wxwindowrefresh} first if you want to immediately redraw the
+window unconditionally.
+
 \membersection{wxWindow::Validate}\label{wxwindowvalidate}
 
 \func{virtual bool}{Validate}{\void}