]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/window.tex
Largely successful attempts to get better spacing
[wxWidgets.git] / docs / latex / wx / window.tex
index b78c4eb1dddff29f55659769b501ab8df241c192..de5cbadf21530d52398907a526a7598641ec2977 100644 (file)
@@ -1,15 +1,25 @@
 \section{\class{wxWindow}}\label{wxwindow}
 
-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.
+wxWindow is the base class for all windows and represents any visible objecto n
+screen. All controls, top level windows and so on are windows. Sizers and
+device contexts are not, however, as they don't appear on screen themselves.
+
+Please note that all children of the window will be deleted automatically by
+the destructor before the window itself is deleted which means that you don't
+have to worry about deleting them manually. Please see the \helpref{window
+deletion overview}{windowdeletionoverview} for more information.
+
+Also note that in this, and many others, wxWindows classes some 
+\texttt{GetXXX()} methods may be overloaded (as, for example, 
+\helpref{GetSize}{wxwindowgetsize} or 
+\helpref{GetClientSize}{wxwindowgetclientsize}). In this case, the overloads
+are non-virtual because having multiple virtual functions with the same name
+results in a virtual function name hiding at the derived class level (in
+English, this means that the derived class has to override all overloaded
+variants if it overrides any of them). To allow overriding them in the derived
+class, wxWindows uses a unique protected virtual \texttt{DoGetXXX()} method
+and all \texttt{GetXXX()} ones are forwarded to it, so overriding the former
+changes the behaviour of the latter.
 
 \wxheading{Derived from}
 
@@ -29,31 +39,68 @@ window class or on all platforms.
 \begin{twocollist}\itemsep=0pt
 \twocolitem{\windowstyle{wxSIMPLE\_BORDER}}{Displays a thin border around the window. wxBORDER is the old name
 for this style. }
-\twocolitem{\windowstyle{wxDOUBLE\_BORDER}}{Displays a double border. Windows only.}
+\twocolitem{\windowstyle{wxDOUBLE\_BORDER}}{Displays a double border. Windows and Mac only.}
 \twocolitem{\windowstyle{wxSUNKEN\_BORDER}}{Displays a sunken border.}
-\twocolitem{\windowstyle{wxRAISED\_BORDER}}{Displays a raised border. GTK only. }
+\twocolitem{\windowstyle{wxRAISED\_BORDER}}{Displays a raised border.}
 \twocolitem{\windowstyle{wxSTATIC\_BORDER}}{Displays a border suitable for a static control. Windows only. }
+\twocolitem{\windowstyle{wxNO\_BORDER}}{Displays no border, overriding the default border style for the window.}
 \twocolitem{\windowstyle{wxTRANSPARENT\_WINDOW}}{The window is transparent, that is, it will not receive paint
 events. Windows only.}
-\twocolitem{\windowstyle{wxNO\_3D}}{Prevents the children of this window taking on 3D styles, even though
-the application-wide policy is for 3D controls. Windows only.}
 \twocolitem{\windowstyle{wxTAB\_TRAVERSAL}}{Use this to enable tab traversal for non-dialog windows.}
-\twocolitem{\windowstyle{wxWANTS\_CHARS}}{Use this to indicate that the window
-wants to get all char events - even for keys like TAB or ENTER which are
-usually used for dialog navigation and which wouldn't be generated without
-this style}
+\twocolitem{\windowstyle{wxWANTS\_CHARS}}{Use this to indicate that
+the window wants to get all char/key events for all keys - even for
+keys like TAB or ENTER which are usually used for dialog navigation
+and which wouldn't be generated without this style.  If you need to
+use this style in order to get the arrows or etc., but would still like to have
+normal keyboard navigation take place, you should create and send a
+wxNavigationKeyEvent in response to the key events for Tab and
+Shift-Tab.}
 \twocolitem{\windowstyle{wxNO\_FULL\_REPAINT\_ON\_RESIZE}}{Disables repainting
 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.}
 \twocolitem{\windowstyle{wxHSCROLL}}{Use this style to enable a horizontal scrollbar.}
+\twocolitem{\windowstyle{wxALWAYS\_SHOW\_SB}}{If a window has scrollbars,
+disable them instead of hiding them when they are not needed (i.e. when the
+size of the window is big enough to not require the scrollbars to navigate it).
+This style is currently only implemented for wxMSW and wxUniversal and does
+nothing on the other platforms.}
 \twocolitem{\windowstyle{wxCLIP\_CHILDREN}}{Use this style to eliminate flicker caused by the background being
 repainted, then children being painted over them. Windows only.}
+\twocolitem{\windowstyle{wxFULL\_REPAINT\_ON\_RESIZE}}{Use this style to force
+a complete redraw of the window whenever it is resized instead of redrawing
+just the part of the window affected by resizing. Note that this was the
+behaviour by default before 2.5.1 release and that if you experience redraw
+problems with the code which previously used to work you may want to try this.}
 \end{twocollist}
 
 See also \helpref{window styles overview}{windowstyles}.
 
+\wxheading{Extra window styles}
+
+The following are extra styles, set using \helpref{wxWindow::SetExtraStyle}{wxwindowsetextrastyle}.
+
+\twocolwidtha{5cm}%
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxWS\_EX\_VALIDATE\_RECURSIVELY}}{By default, Validate/TransferDataTo/FromWindow()
+only work on direct children of the window (compatible behaviour). Set this flag to make them recursively
+descend into all subwindows.}
+\twocolitem{\windowstyle{wxWS\_EX\_BLOCK\_EVENTS}}{wxCommandEvents and the objects of the derived classes are forwarded to the
+parent window and so on recursively by default. Using this flag for the
+given window allows to block this propagation at this window, i.e. prevent
+the events from being propagated further upwards. Dialogs have this
+flag on by default.}
+\twocolitem{\windowstyle{wxWS\_EX\_TRANSIENT}}{Don't use this window as an implicit parent for the other windows: this must
+be used with transient windows as otherwise there is the risk of creating a
+dialog/frame with this window as a parent which would lead to a crash if the
+parent is destroyed before the child.}
+\twocolitem{\windowstyle{wxWS\_EX\_PROCESS\_IDLE}}{This window should always process idle events, even
+if the mode set by \helpref{wxIdleEvent::SetMode}{wxidleeventsetmode} is wxIDLE\_PROCESS\_SPECIFIED.}
+\twocolitem{\windowstyle{wxWS\_EX\_PROCESS\_UI\_UPDATES}}{This window should always process UI update events,
+even if the mode set by \helpref{wxUpdateUIEvent::SetMode}{wxupdateuieventsetmode} is wxUPDATE\_UI\_PROCESS\_SPECIFIED.}
+\end{twocollist}
+
 \wxheading{See also}
 
 \helpref{Event handling overview}{eventhandlingoverview}
@@ -115,6 +162,9 @@ can delete a window only when it is safe to do so, in idle time.
 Adds a child window.  This is called automatically by window creation
 functions so should not be required by the application programmer.
 
+Notice that this function is mostly internal to wxWindows and shouldn't be
+called by the user code.
+
 \wxheading{Parameters}
 
 \docparam{child}{Child window to add.}
@@ -218,9 +268,9 @@ or {\tt wxBOTH}.}
 
 \helpref{wxWindow::CentreOnParent}{wxwindowcenteronparent}
 
-\membersection{wxWindow::Clear}\label{wxwindowclear}
+\membersection{wxWindow::ClearBackground}\label{wxwindowclearbackground}
 
-\func{void}{Clear}{\void}
+\func{void}{ClearBackground}{\void}
 
 Clears the window by filling it with the current background colour. Does not
 cause an erase background event to be generated.
@@ -309,7 +359,6 @@ and then divided by 8.
 \wxheading{Remarks}
 
 Dialog units are used for maintaining a dialog's proportions even if the font changes.
-Dialogs created using Dialog Editor optionally use dialog units.
 
 You can also use these functions programmatically. A convenience macro is defined:
 
@@ -357,15 +406,12 @@ character height.
 \wxheading{Remarks}
 
 Dialog units are used for maintaining a dialog's proportions even if the font changes.
-Dialogs created using Dialog Editor optionally use dialog units.
 
 \wxheading{See also}
 
 \helpref{wxWindow::ConvertDialogToPixels}{wxwindowconvertdialogtopixels}
 
-
-\pythonnote{In place of a single overloaded method name, wxPython
-implements the following methods:\par
+\pythonnote{In place of a single overloaded method name, wxPythonimplements the following methods:\par
 \indented{2cm}{\begin{twocollist}
 \twocolitem{{\bf ConvertDialogPointToPixels(point)}}{Accepts and returns a wxPoint}
 \twocolitem{{\bf ConvertDialogSizeToPixels(size)}}{Accepts and returns a wxSize}
@@ -396,7 +442,7 @@ Destroys all children of a window.  Called automatically by the destructor.
 
 \membersection{wxWindow::Disable}\label{wxwindowdisable}
 
-\func{void}{Disable}{\void}
+\func{bool}{Disable}{\void}
 
 Disables the window, same as \helpref{Enable({\tt false})}{wxwindowenable}.
 
@@ -405,6 +451,32 @@ Disables the window, same as \helpref{Enable({\tt false})}{wxwindowenable}.
 Returns {\tt true} if the window has been disabled, {\tt false} if it had been
 already disabled before the call to this function.
 
+\membersection{wxWindow::DoUpdateWindowUI}\label{wxwindowdoupdatewindowui}
+
+\func{virtual void}{DoUpdateWindowUI}{\param{wxUpdateUIEvent\&}{ event}}
+
+Does the window-specific updating after processing the update event.
+This function is called by \helpref{wxWindow::UpdateWindowUI}{wxwindowupdatewindowui} 
+in order to check return values in the \helpref{wxUpdateUIEvent}{wxupdateuievent} and
+act appropriately. For example, to allow frame and dialog title updating, wxWindows
+implements this function as follows:
+
+\begin{verbatim}
+// do the window-specific processing after processing the update event
+void wxTopLevelWindowBase::DoUpdateWindowUI(wxUpdateUIEvent& event)
+{
+    if ( event.GetSetEnabled() )
+        Enable(event.GetEnabled());
+    
+    if ( event.GetSetText() )
+    {
+        if ( event.GetText() != GetTitle() )
+            SetTitle(event.GetText());
+    }
+}
+\end{verbatim}
+
+
 \membersection{wxWindow::DragAcceptFiles}\label{wxwindowdragacceptfiles}
 
 \func{virtual void}{DragAcceptFiles}{\param{bool}{ accept}}
@@ -456,6 +528,7 @@ Note that this is a static function, so it can be called without needing a wxWin
 
 \helpref{wxWindow::SetFocus}{wxwindowsetfocus}
 
+
 \membersection{wxWindow::FindWindow}\label{wxwindowfindwindow}
 
 \func{wxWindow*}{FindWindow}{\param{long}{ id}}
@@ -522,7 +595,16 @@ The search is recursive in both cases.
 \func{virtual void}{Fit}{\void}
 
 Sizes the window so that it fits around its subwindows. This function won't do
-anything if there are no subwindows.
+anything if there are no subwindows and will only really work correctly if the
+sizers are used for the subwindows layout. Also, if the window has exactly one
+subwindow it is better (faster and the result is more precise as Fit adds some
+margin to account for fuzziness of its calculations) to call
+
+\begin{verbatim}
+    window->SetClientSize(child->GetSize());
+\end{verbatim}
+
+instead of calling Fit.
 
 \membersection{wxWindow::FitInside}\label{wxwindowfitinside}
 
@@ -548,6 +630,12 @@ 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::GetAcceleratorTable}\label{wxwindowgetacceleratortable}
+
+\constfunc{wxAcceleratorTable*}{GetAcceleratorTable}{\void}
+
+Gets the accelerator table for this window. See \helpref{wxAcceleratorTable}{wxacceleratortable}.
+
 \membersection{wxWindow::GetAccessible}\label{wxwindowgetaccessible}
 
 \func{wxAccessibile*}{GetAccessible}{\void}
@@ -580,7 +668,7 @@ Returns the background colour of the window.
 
 \membersection{wxWindow::GetBestSize}\label{wxwindowgetbestsize}
 
-\constfunc{virtual wxSize}{GetBestSize}{\void}
+\constfunc{wxSize}{GetBestSize}{\void}
 
 This functions returns the best acceptable minimal size for the window. For
 example, for a static control, it will be the minimal size such that the
@@ -628,12 +716,12 @@ Returns a reference to the list of the window's children.
 
 \membersection{wxWindow::GetClientSize}\label{wxwindowgetclientsize}
 
-\constfunc{virtual void}{GetClientSize}{\param{int* }{width}, \param{int* }{height}}
+\constfunc{void}{GetClientSize}{\param{int* }{width}, \param{int* }{height}}
 
 \perlnote{In wxPerl this method takes no parameter and returns
 a 2-element list {\tt ( width, height )}.}
 
-\constfunc{virtual wxSize}{GetClientSize}{\void}
+\constfunc{wxSize}{GetClientSize}{\void}
 
 This gets the size of the window `client area' in pixels.
 The client area is the area which may be drawn on by the programmer,
@@ -658,6 +746,7 @@ implements the following methods:\par
 \helpref{GetSize}{wxwindowgetsize}
 \helpref{GetVirtualSize}{wxwindowgetvirtualsize}
 
+
 \membersection{wxWindow::GetConstraints}\label{wxwindowgetconstraints}
 
 \constfunc{wxLayoutConstraints*}{GetConstraints}{\void}
@@ -671,6 +760,16 @@ Returns a pointer to the window's layout constraints, or NULL if there are none.
 Return the sizer that this window is a member of, if any, otherwise
 {\tt NULL}.
 
+\membersection{wxWindow::GetCursor}\label{wxwindowgetcursor}
+
+\constfunc{const wxCursor\&}{GetCursor}{\void}
+
+Return the cursor associated with this window.
+
+\wxheading{See also}
+
+\helpref{wxWindow::SetCursor}{wxwindowsetcursor}
+
 \membersection{wxWindow::GetDropTarget}\label{wxwindowgetdroptarget}
 
 \constfunc{wxDropTarget*}{GetDropTarget}{\void}
@@ -884,9 +983,9 @@ Returns the built-in scrollbar range.
 
 \membersection{wxWindow::GetSize}\label{wxwindowgetsize}
 
-\constfunc{virtual void}{GetSize}{\param{int* }{width}, \param{int* }{height}}
+\constfunc{void}{GetSize}{\param{int* }{width}, \param{int* }{height}}
 
-\constfunc{virtual wxSize}{GetSize}{\void}
+\constfunc{wxSize}{GetSize}{\void}
 
 This gets the size of the entire window in pixels,
 including title bar, border, scrollbars, etc.
@@ -951,7 +1050,6 @@ window with the currently selected font.
 
 \docparam{use16}{If {\tt true}, {\it string} contains 16-bit characters. The default is {\tt false}.}
 
-
 \pythonnote{In place of a single overloaded method name, wxPython
 implements the following methods:\par
 \indented{2cm}{\begin{twocollist}
@@ -975,6 +1073,12 @@ Gets the window's title. Applicable only to frames and dialogs.
 
 \helpref{wxWindow::SetTitle}{wxwindowsettitle}
 
+\membersection{wxWindow::GetToolTip}\label{wxwindowgettooltip}
+
+\constfunc{wxToolTip*}{GetToolTip}{\void}
+
+Get the associated tooltip or NULL if none.
+
 \membersection{wxWindow::GetUpdateRegion}\label{wxwindowgetupdateregion}
 
 \constfunc{virtual wxRegion}{GetUpdateRegion}{\void}
@@ -1052,7 +1156,7 @@ Returns {\tt true} if the window is enabled for input, {\tt false} otherwise.
 
 \helpref{wxWindow::Enable}{wxwindowenable}
 
-\membersection{wxWindow:IsExposed}\label{wxwindowisexposed}
+\membersection{wxWindow::IsExposed}\label{wxwindowisexposed}
 
 \constfunc{bool}{IsExposed}{\param{int }{x}, \param{int }{y}}
 
@@ -1069,7 +1173,7 @@ only redrawing those areas, which have been exposed.
 \pythonnote{In place of a single overloaded method name, wxPython
 implements the following methods:\par
 \indented{2cm}{\begin{twocollist}
-\twocolitem{{\bf IsExposed(x,y, w=0,h=0}}{}
+\twocolitem{{\bf IsExposed(x,y, w=0,h=0)}}{}
 \twocolitem{{\bf IsExposedPoint(pt)}}{}
 \twocolitem{{\bf IsExposedRect(rect)}}{}
 \end{twocollist}}}
@@ -1108,6 +1212,14 @@ for this window.
 See \helpref{wxWindow::SetAutoLayout}{wxwindowsetautolayout}: when auto
 layout is on, this function gets called automatically when the window is resized.
 
+\membersection{wxWindow::LineDown}\label{wxwindowlinedown}
+
+This is just a wrapper for \helpref{ScrollLines()}{wxwindowscrolllines}$(1)$.
+
+\membersection{wxWindow::LineUp}\label{wxwindowlineup}
+
+This is just a wrapper for \helpref{ScrollLines()}{wxwindowscrolllines}$(-1)$.
+
 \membersection{wxWindow::Lower}\label{wxwindowlower}
 
 \func{void}{Lower}{\void}
@@ -1120,8 +1232,7 @@ or frame).
 \func{virtual void}{MakeModal}{\param{bool }{flag}}
 
 Disables all other windows in the application so that
-the user can only interact with this window. (This function
-is not implemented anywhere).
+the user can only interact with this window.
 
 \wxheading{Parameters}
 
@@ -1658,6 +1769,27 @@ implements the following methods:\par
 %% \helpref{wxSysColourChangedEvent}{wxsyscolourchangedevent},\rtfsp
 %% \helpref{Event handling overview}{eventhandlingoverview}
 
+\membersection{wxWindow::OnInternalIdle}\label{wxwindowoninternalidle}
+
+\func{virtual void}{OnInternalIdle}{\void}
+
+This virtual function is normally only used internally, but
+sometimes an application may need it to implement functionality
+that should not be disabled by an application defining an OnIdle
+handler in a derived class.
+
+This function may be used to do delayed painting, for example,
+and most implementations call \helpref{wxWindow::UpdateWindowUI}{wxwindowupdatewindowui} 
+in order to send update events to the window in idle time.
+
+\membersection{wxWindow::PageDown}\label{wxwindowpagedown}
+
+This is just a wrapper for \helpref{ScrollPages()}{wxwindowscrollpages}$(1)$.
+
+\membersection{wxWindow::PageUp}\label{wxwindowpageup}
+
+This is just a wrapper for \helpref{ScrollPages()}{wxwindowscrollpages}$(-1)$.
+
 \membersection{wxWindow::PopEventHandler}\label{wxwindowpopeventhandler}
 
 \constfunc{wxEvtHandler*}{PopEventHandler}{\param{bool }{deleteHandler = {\tt false}}}
@@ -1759,7 +1891,7 @@ or frame).
 \func{virtual void}{Refresh}{\param{bool}{ eraseBackground = {\tt true}}, \param{const wxRect* }{rect
 = NULL}}
 
-Causes a message or event to be generated to repaint the
+Causes an event to be generated to repaint the
 window.
 
 \wxheading{Parameters}
@@ -1776,13 +1908,46 @@ be treated as damaged.}
 
 \membersection{wxWindow::RefreshRect}\label{wxwindowrefreshrect}
 
-\func{virtual void}{Refresh}{\param{const wxRect\& }{rect}}
+\func{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::RegisterHotKey}\label{wxwindowregisterhotkey}
+
+\func{bool}{RegisterHotKey}{\param{int}{ hotkeyId}, \param{int}{ modifiers}, \param{int}{ virtualKeyCode}}
+
+Registers a system wide hotkey. Every time the user presses the hotkey registered here, this window
+will receive a hotkey event. It will receive the event even if the application is in the background
+and does not have the input focus because the user is working with some other application.
+
+\wxheading{Parameters}
+
+\docparam{hotkeyId}{Numeric identifier of the hotkey. For applications this must be between 0 and 0xBFFF. If
+this function is called from a shared DLL, it must be a system wide unique identifier between 0xC000 and 0xFFFF.
+This is a MSW specific detail.}
+
+\docparam{modifiers}{A bitwise combination of {\tt wxMOD\_SHIFT}, {\tt wxMOD\_CONTROL}, {\tt wxMOD\_ALT}
+or {\tt wxMOD\_WIN} specifying the modifier keys that have to be pressed along with the key.}
+
+\docparam{virtualKeyCode}{The virtual key code of the hotkey.}
+
+\wxheading{Return value}
+
+{\tt true} if the hotkey was registered successfully. {\tt false} if some other application already registered a
+hotkey with this modifier/virtualKeyCode combination.
+
+\wxheading{Remarks}
+
+Use EVT\_HOTKEY(hotkeyId, fnc) in the event table to capture the event.
+This function is currently only implemented under MSW.
+
+\wxheading{See also}
+
+\helpref{wxWindow::UnregisterHotKey}{wxwindowunregisterhotkey}
+
 \membersection{wxWindow::ReleaseMouse}\label{wxwindowreleasemouse}
 
 \func{virtual void}{ReleaseMouse}{\void}
@@ -1803,6 +1968,9 @@ Releases mouse input captured with \helpref{wxWindow::CaptureMouse}{wxwindowcapt
 Removes a child window.  This is called automatically by window deletion
 functions so should not be required by the application programmer.
 
+Notice that this function is mostly internal to wxWindows and shouldn't be
+called by the user code.
+
 \wxheading{Parameters}
 
 \docparam{child}{Child window to remove.}
@@ -1983,11 +2151,11 @@ The background colour is usually painted by the default\rtfsp
 under Windows and automatically under GTK.
 
 Note that setting the background colour does not cause an immediate refresh, so you
-may wish to call \helpref{wxWindow::Clear}{wxwindowclear} or \helpref{wxWindow::Refresh}{wxwindowrefresh} after
+may wish to call \helpref{wxWindow::ClearBackground}{wxwindowclearbackground} or \helpref{wxWindow::Refresh}{wxwindowrefresh} after
 calling this function.
 
-Use this function with care under GTK as the new appearance of the window might
-not look equally well when used with "Themes", i.e GTK's ability to change its
+Use this function with care under GTK+ as the new appearance of the window might
+not look equally well when used with "Themes", i.e GTK+'s ability to change its
 look as the user wishes with run-time loadable modules.
 
 \wxheading{See also}
@@ -1995,7 +2163,7 @@ look as the user wishes with run-time loadable modules.
 \helpref{wxWindow::GetBackgroundColour}{wxwindowgetbackgroundcolour},\rtfsp
 \helpref{wxWindow::SetForegroundColour}{wxwindowsetforegroundcolour},\rtfsp
 \helpref{wxWindow::GetForegroundColour}{wxwindowgetforegroundcolour},\rtfsp
-\helpref{wxWindow::Clear}{wxwindowclear},\rtfsp
+\helpref{wxWindow::ClearBackground}{wxwindowclearbackground},\rtfsp
 \helpref{wxWindow::Refresh}{wxwindowrefresh},\rtfsp
 \helpref{wxEraseEvent}{wxeraseevent}
 
@@ -2094,6 +2262,7 @@ If the window already has a drop target, it is deleted.
 \helpref{wxWindow::GetDropTarget}{wxwindowgetdroptarget},
 \helpref{Drag and drop overview}{wxdndoverview}
 
+
 \membersection{wxWindow::SetEventHandler}\label{wxwindowseteventhandler}
 
 \func{void}{SetEventHandler}{\param{wxEvtHandler* }{handler}}
@@ -2154,6 +2323,10 @@ you should use the style of
 {\tt wxDEFAULT\_FRAME\_STYLE \& \textasciitilde(wxMINIMIZE\_BOX | wxMAXIMIZE\_BOX)} for the
 frames having this style (the dialogs don't have minimize nor maximize box by
 default)}
+\twocolitem{\windowstyle{wxWS\_EX\_PROCESS\_IDLE}}{This window should always process idle events, even
+if the mode set by \helpref{wxIdleEvent::SetMode}{wxidleeventsetmode} is wxIDLE\_PROCESS\_SPECIFIED.}
+\twocolitem{\windowstyle{wxWS\_EX\_PROCESS\_UI\_UPDATES}}{This window should always process UI update events,
+even if the mode set by \helpref{wxUpdateUIEvent::SetMode}{wxupdateuieventsetmode} is wxUPDATE\_UI\_PROCESS\_SPECIFIED.}
 \end{twocollist}
 
 \membersection{wxWindow::SetFocus}\label{wxwindowsetfocus}
@@ -2245,6 +2418,7 @@ on creation and should not be modified subsequently.
 \helpref{wxWindow::GetId}{wxwindowgetid},\rtfsp
 \helpref{Window identifiers}{windowids}
 
+
 \membersection{wxWindow::SetName}\label{wxwindowsetname}
 
 \func{virtual void}{SetName}{\param{const wxString\& }{name}}
@@ -2316,6 +2490,7 @@ from your \helpref{wxSizeEvent}{wxsizeevent} handler function.
 \helpref{wxScrollBar}{wxscrollbar}, \helpref{wxScrolledWindow}{wxscrolledwindow}
 
 \begin{comment}
+
 \membersection{wxWindow::SetScrollPage}\label{wxwindowsetscrollpage}
 
 \func{virtual void}{SetScrollPage}{\param{int }{orientation}, \param{int }{pageSize}, \param{bool }{refresh = {\tt true}}}
@@ -2381,6 +2556,7 @@ application to take note of scrollbar attributes and redraw contents accordingly
 \helpref{wxScrollBar}{wxscrollbar}, \helpref{wxScrolledWindow}{wxscrolledwindow}
 
 \begin{comment}
+
 \membersection{wxWindow::SetScrollRange}\label{wxwindowsetscrollrange}
 
 \func{virtual void}{SetScrollRange}{\param{int }{orientation}, \param{int }{range}, \param{bool }{refresh = {\tt true}}}
@@ -2576,13 +2752,6 @@ defined by a user's selected theme.
 Dialogs, notebook pages and the status bar have this flag set to true
 by default so that the default look and feel is simulated best.
 
-\membersection{wxWindow::SetValidator}\label{wxwindowsetvalidator}
-
-\func{virtual void}{SetValidator}{\param{const wxValidator\&}{ validator}}
-
-Deletes the current validator (if any) and sets the window validator, having called wxValidator::Clone to
-create a new validator of this type.
-
 \membersection{wxWindow::SetToolTip}\label{wxwindowsettooltip}
 
 \func{void}{SetToolTip}{\param{const wxString\& }{tip}}
@@ -2592,15 +2761,14 @@ create a new validator of this type.
 Attach a tooltip to the window.
 
 See also: \helpref{GetToolTip}{wxwindowgettooltip},
         \helpref{wxToolTip}{wxtooltip}
+ \helpref{wxToolTip}{wxtooltip}
 
+\membersection{wxWindow::SetValidator}\label{wxwindowsetvalidator}
 
-\membersection{wxWindow::GetToolTip}\label{wxwindowgettooltip}
-
-\constfunc{wxToolTip*}{GetToolTip}{\void}
-
-Get the associated tooltip or NULL if none.
+\func{virtual void}{SetValidator}{\param{const wxValidator\&}{ validator}}
 
+Deletes the current validator (if any) and sets the window validator, having called wxValidator::Clone to
+create a new validator of this type.
 
 \membersection{wxWindow::SetVirtualSize}\label{wxwindowsetvirtualsize}
 
@@ -2610,7 +2778,6 @@ Get the associated tooltip or NULL if none.
 
 Sets the virtual size of the window in pixels.
 
-
 \membersection{wxWindow::SetVirtualSizeHints}\label{wxwindowsetvirtualsizehints}
 
 \func{virtual void}{SetVirtualSizeHints}{\param{int}{ minW},\param{int}{ minH}, \param{int}{ maxW=-1}, \param{int}{ maxH=-1}}
@@ -2654,6 +2821,7 @@ See \helpref{Window styles}{windowstyles} for more information about flags.
 
 \helpref{GetWindowStyleFlag}{wxwindowgetwindowstyleflag}
 
+
 \membersection{wxWindow::Show}\label{wxwindowshow}
 
 \func{virtual bool}{Show}{\param{bool}{ show = {\tt true}}}
@@ -2675,6 +2843,7 @@ done because it already was in the requested state.
 
 \helpref{wxWindow::IsShown}{wxwindowisshown}
 
+
 \membersection{wxWindow::Thaw}\label{wxwindowthaw}
 
 \func{virtual void}{Thaw}{\void}
@@ -2715,6 +2884,28 @@ Returns {\tt false} if a transfer failed.
 \helpref{wxWindow::TransferDataFromWindow}{wxwindowtransferdatafromwindow},\rtfsp
 \helpref{wxValidator}{wxvalidator}, \helpref{wxWindow::Validate}{wxwindowvalidate}
 
+\membersection{wxWindow::UnregisterHotKey}\label{wxwindowunregisterhotkey}
+
+\func{bool}{UnregisterHotKey}{\param{int}{ hotkeyId}}
+
+Unregisters a system wide hotkey.
+
+\wxheading{Parameters}
+
+\docparam{hotkeyId}{Numeric identifier of the hotkey. Must be the same id that was passed to RegisterHotKey.}
+
+\wxheading{Return value}
+
+{\tt true} if the hotkey was unregistered successfully, {\tt false} if the id was invalid.
+
+\wxheading{Remarks}
+
+This function is currently only implemented under MSW.
+
+\wxheading{See also}
+
+\helpref{wxWindow::RegisterHotKey}{wxwindowregisterhotkey}
+
 \membersection{wxWindow::Update}\label{wxwindowupdate}
 
 \func{virtual void}{Update}{\void}
@@ -2726,6 +2917,54 @@ 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::UpdateWindowUI}\label{wxwindowupdatewindowui}
+
+\func{virtual void}{UpdateWindowUI}{\param{long}{ flags = wxUPDATE\_UI\_NONE}}
+
+This function sends \helpref{wxUpdateUIEvents}{wxupdateuievent} to
+the window. The particular implementation depends on the window; for
+example a wxToolBar will send an update UI event for each toolbar button,
+and a wxFrame will send an update UI event for each menubar menu item.
+You can call this function from your application to ensure that your
+UI is up-to-date at this point (as far as your wxUpdateUIEvent handlers
+are concerned). This may be necessary if you have called 
+\helpref{wxUpdateUIEvent::SetMode}{wxupdateuieventsetmode} or 
+\helpref{wxUpdateUIEvent::SetUpdateInterval}{wxupdateuieventsetupdateinterval} to
+limit the overhead that wxWindows incurs by sending update UI events in idle time.
+
+{\it flags} should be a bitlist of one or more of the following values.
+
+\begin{verbatim}
+enum wxUpdateUI
+{
+    wxUPDATE_UI_NONE          = 0x0000, // No particular value
+    wxUPDATE_UI_RECURSE       = 0x0001, // Call the function for descendants
+    wxUPDATE_UI_FROMIDLE      = 0x0002  // Invoked from On(Internal)Idle
+};
+\end{verbatim}
+
+If you are calling this function from an OnInternalIdle or OnIdle
+function, make sure you pass the wxUPDATE\_UI\_FROMIDLE flag, since
+this tells the window to only update the UI elements that need
+to be updated in idle time. Some windows update their elements
+only when necessary, for example when a menu is about to be shown.
+The following is an example of how to call UpdateWindowUI from
+an idle function.
+
+\begin{verbatim}
+void MyWindow::OnInternalIdle()
+{
+    if (wxUpdateUIEvent::CanUpdate(this))
+        UpdateWindowUI(wxUPDATE_UI_FROMIDLE);
+}
+\end{verbatim}
+
+\wxheading{See also}
+
+\helpref{wxUpdateUIEvent}{wxupdateuievent}, 
+\helpref{wxWindow::DoUpdateWindowUI}{wxwindowdoupdatewindowui}, 
+\helpref{wxWindow::OnInternalIdle}{wxwindowoninternalidle}
+
 \membersection{wxWindow::Validate}\label{wxwindowvalidate}
 
 \func{virtual bool}{Validate}{\void}