X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/aa4b42f0b79eb9fc43eec9b8a23b790ca6b00fce..ec59d2ccea39b0225f49e6dd326d4d11940d656d:/docs/latex/wx/window.tex diff --git a/docs/latex/wx/window.tex b/docs/latex/wx/window.tex index 4ae3e95a97..8cd16384b8 100644 --- a/docs/latex/wx/window.tex +++ b/docs/latex/wx/window.tex @@ -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 )}.} +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, @@ -655,9 +743,10 @@ implements the following methods:\par \wxheading{See also} -\helpref{GetSize}{wxwindowgetsize} +\helpref{GetSize}{wxwindowgetsize},\rtfsp \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} @@ -1075,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}}} @@ -1134,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} @@ -1672,6 +1769,19 @@ 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)$. @@ -1781,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} @@ -1798,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} @@ -1825,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.} @@ -2005,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} @@ -2017,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} @@ -2116,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}} @@ -2176,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} @@ -2267,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}} @@ -2338,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}}} @@ -2403,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}}} @@ -2667,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}}} @@ -2688,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} @@ -2728,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} @@ -2739,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}