\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}
\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}
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.}
\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.
\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:
\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}
\membersection{wxWindow::Disable}\label{wxwindowdisable}
-\func{void}{Disable}{\void}
+\func{bool}{Disable}{\void}
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}}
\helpref{wxWindow::SetFocus}{wxwindowsetfocus}
+
\membersection{wxWindow::FindWindow}\label{wxwindowfindwindow}
\func{wxWindow*}{FindWindow}{\param{long}{ id}}
\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}
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}
\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
\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,
\helpref{GetSize}{wxwindowgetsize}
\helpref{GetVirtualSize}{wxwindowgetvirtualsize}
+
\membersection{wxWindow::GetConstraints}\label{wxwindowgetconstraints}
\constfunc{wxLayoutConstraints*}{GetConstraints}{\void}
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}
\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.
\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}
\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}
\helpref{wxWindow::Enable}{wxwindowenable}
-\membersection{wxWindow:IsExposed}\label{wxwindowisexposed}
+\membersection{wxWindow::IsExposed}\label{wxwindowisexposed}
\constfunc{bool}{IsExposed}{\param{int }{x}, \param{int }{y}}
\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}}}
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}
\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}
%% \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}}}
\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}
\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}
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.}
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}
\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}
\helpref{wxWindow::GetDropTarget}{wxwindowgetdroptarget},
\helpref{Drag and drop overview}{wxdndoverview}
+
\membersection{wxWindow::SetEventHandler}\label{wxwindowseteventhandler}
\func{void}{SetEventHandler}{\param{wxEvtHandler* }{handler}}
{\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}
\helpref{wxWindow::GetId}{wxwindowgetid},\rtfsp
\helpref{Window identifiers}{windowids}
+
\membersection{wxWindow::SetName}\label{wxwindowsetname}
\func{virtual void}{SetName}{\param{const wxString\& }{name}}
\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}}}
\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}}}
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}}
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}
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}}
\helpref{GetWindowStyleFlag}{wxwindowgetwindowstyleflag}
+
\membersection{wxWindow::Show}\label{wxwindowshow}
\func{virtual bool}{Show}{\param{bool}{ show = {\tt true}}}
\helpref{wxWindow::IsShown}{wxwindowisshown}
+
\membersection{wxWindow::Thaw}\label{wxwindowthaw}
\func{virtual void}{Thaw}{\void}
\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}
\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}