\helpref{wxEvtHandler}{wxevthandler}\\
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<wx/window.h>
+
\wxheading{Window styles}
The following styles can apply to all windows, although they will not always make sense for a particular
\twocolwidtha{5cm}%
\begin{twocollist}\itemsep=0pt
\twocolitem{\windowstyle{wxSIMPLE\_BORDER}}{Displays a thin border around the window. wxBORDER is the old name
-for this style.}
+for this style. Windows only. }
\twocolitem{\windowstyle{wxDOUBLE\_BORDER}}{Displays a double border. Windows only.}
\twocolitem{\windowstyle{wxSUNKEN\_BORDER}}{Displays a sunken border.}
-\twocolitem{\windowstyle{wxRAISED\_BORDER}}{Displays a sunken border.}
-\twocolitem{\windowstyle{wxSTATIC\_BORDER}}{Displays a border suitable for a static control.}
+\twocolitem{\windowstyle{wxRAISED\_BORDER}}{Displays a raised border.}
+\twocolitem{\windowstyle{wxSTATIC\_BORDER}}{Displays a border suitable for a static control. Windows only. }
\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{wxVSCROLL}}{Use this style to enable a vertical scrollbar.}
-\twocolitem{\windowstyle{wxHSCROLL}}{Use this style to enable a horizontal scrollbar.}
+\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{wxCLIP\_CHILDREN}}{Use this style to eliminate flicker caused by the background being
-repainted, then children being painted over them. Windows-only.}
+repainted, then children being painted over them. Windows only.}
\end{twocollist}
See also \helpref{window styles overview}{windowstyles}.
an actual position.}
\docparam{size}{Window size. wxDefaultSize is (-1, -1) which indicates that wxWindows
-should generate a default size for the window.}
+should generate a default size for the window. If no suitable size can be found, the
+window will be sized to 20x20 pixels so that the window is visible but obviously not
+correctly sized. }
\docparam{style}{Window style. For generic window styles, please see \helpref{wxWindow}{wxwindow}.}
\func{void}{Clear}{\void}
-Clears the window by filling it with the current background colour.
+Clears the window by filling it with the current background colour. Does not
+cause an erase background event to be generated.
\membersection{wxWindow::ClientToScreen}
\constfunc{virtual void}{ClientToScreen}{\param{int* }{x}, \param{int* }{y}}
+\constfunc{virtual wxPoint}{ClientToScreen}{\param{const wxPoint\&}{ pt}}
+
Converts to screen coordinates from coordinates relative to this window.
\docparam{x}{A pointer to a integer value for the x coordinate. Pass the client coordinate in, and
\docparam{y}{A pointer to a integer value for the y coordinate. Pass the client coordinate in, and
a screen coordinate will be passed out.}
+\docparam{pt}{The client position for the second form of the function.}
+
+\pythonnote{In place of a single overloaded method name, wxPython
+implements the following methods:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{\bf{ClientToScreen(point)}}{Accepts and returns a wxPoint}
+\twocolitem{\bf{ClientToScreenXY(x, y)}}{Returns a 2-tuple, (x, y)}
+\end{twocollist}}
+}
+
+
\membersection{wxWindow::Close}\label{wxwindowclose}
\func{virtual bool}{Close}{\param{const bool}{ force = FALSE}}
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
+itself only hides the dialog.
+
+To guarantee that the window will be destroyed, call \helpref{wxWindow::Destroy}{wxwindowdestroy} instead.
+
\wxheading{See also}
\helpref{Window deletion overview}{windowdeletionoverview},\rtfsp
\helpref{wxWindow::Destroy}{wxwindowdestroy},\rtfsp
\helpref{wxCloseEvent}{wxcloseevent}
+\membersection{wxWindow::ConvertDialogToPixels}\label{wxwindowconvertdialogtopixels}
+
+\func{wxPoint}{ConvertDialogToPixels}{\param{const wxPoint\&}{ pt}}
+
+\func{wxSize}{ConvertDialogToPixels}{\param{const wxSize\&}{ sz}}
+
+Converts a point or size from dialog units to pixels.
+
+For the x dimension, the dialog units are multiplied by the average character width
+and then divided by 4.
+
+For the y dimension, the dialog units are multiplied by the average character height
+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:
+
+{\small
+\begin{verbatim}
+#define wxDLG_UNIT(parent, pt) parent->ConvertDialogToPixels(pt)
+\end{verbatim}
+}
+
+\wxheading{See also}
+
+\helpref{wxWindow::ConvertPixelsToDialog}{wxwindowconvertpixelstodialog}
+
+\pythonnote{In place of a single overloaded method name, wxPython
+implements 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}
+\end{twocollist}}
+
+Additionally, the following helper functions are defined:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{\bf{wxDLG\_PNT(win, point)}}{Converts a wxPoint from dialog
+units to pixels}
+\twocolitem{\bf{wxDLG\_SZE(win, size)}}{Converts a wxSize from dialog
+units to pixels}
+\end{twocollist}}
+}
+
+
+\membersection{wxWindow::ConvertPixelsToDialog}\label{wxwindowconvertpixelstodialog}
+
+\func{wxPoint}{ConvertPixelsToDialog}{\param{const wxPoint\&}{ pt}}
+
+\func{wxSize}{ConvertPixelsToDialog}{\param{const wxSize\&}{ sz}}
+
+Converts a point or size from pixels to dialog units.
+
+For the x dimension, the pixels are multiplied by 4 and then divided by the average
+character width.
+
+For the y dimension, the pixels are multipled by 8 and then divided by the average
+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
+\indented{2cm}{\begin{twocollist}
+\twocolitem{\bf{ConvertDialogPointToPixels(point)}}{Accepts and returns a wxPoint}
+\twocolitem{\bf{ConvertDialogSizeToPixels(size)}}{Accepts and returns a wxSize}
+\end{twocollist}}
+}
+
\membersection{wxWindow::Destroy}\label{wxwindowdestroy}
\func{virtual bool}{Destroy}{\void}
\helpref{wxWindow::IsEnabled}{wxwindowisenabled}
-\membersection{wxWindow::FakePopupMenu}\label{wxwindowfakepopupmenu}
-
-\func{virtual bool}{FakePopupMenu}{\param{wxMenu* }{menu}, \param{int }{x}, \param{int }{y}}
-
-A replacement for wxWindow::PopupMenu for cases where the PopupMenu implementation
-does not work correctly, in particular on Motif platforms.
-
-\wxheading{Parameters}
-
-\docparam{menu}{Menu to pop up.}
+\membersection{wxWindow::FindFocus}\label{wxwindowfindfocus}
-\docparam{x}{Required x position for the menu to appear.}
+\func{static wxWindow*}{FindFocus}{\void}
-\docparam{y}{Required y position for the menu to appear.}
+Finds the window or control which currently has the keyboard focus.
\wxheading{Remarks}
-This is a cut-down version of PopupMenu using a dialog and listbox; pull-right menus
-are not supported.
+Note that this is a static function, so it can be called without needing a wxWindow pointer.
\wxheading{See also}
-\helpref{wxMenu}{wxmenu}, \helpref{wxWindow::PopupMenu}{wxwindowpopupmenu}
-
-\membersection{wxWindow::FindFocus}\label{wxwindowfindfocus}
+\helpref{wxWindow::SetFocus}{wxwindowsetfocus}
-\func{static wxWindow*}{FindFocus}{\void}
+\membersection{wxWindow::FindWindow}\label{wxwindowfindwindow}
-Finds the window or control which currently has the keyboard focus.
+\func{wxWindow*}{FindWindow}{\param{long}{ id}}
-\wxheading{Remarks}
+Find a child of this window, by identifier.
-Note that this is a static function, so it can be called without needing a wxWindow pointer.
+\func{wxWindow*}{FindWindow}{\param{const wxString\&}{ name}}
-\wxheading{See also}
+Find a child of this window, by name.
-\helpref{wxWindow::SetFocus}{wxwindowsetfocus}
+\pythonnote{In place of a single overloaded method name, wxPython
+implements the following methods:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{\bf{FindWindowById(id)}}{Accepts an integer}
+\twocolitem{\bf{FindWindowByName(name)}}{Accepts a string}
+\end{twocollist}}
+}
\membersection{wxWindow::Fit}\label{wxwindowfit}
\membersection{wxWindow::GetChildren}
-\func{wxList*}{GetChildren}{\void}
+\func{wxList\&}{GetChildren}{\void}
-Returns a pointer to the list of the window's children.
+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{virtual 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, excluding title bar, border etc.
\docparam{height}{Receives the client height in pixels.}
+\pythonnote{In place of a single overloaded method name, wxPython
+implements the following methods:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{\bf{wxGetClientSizeTuple()}}{Returns a 2-tuple of (width, height)}
+\twocolitem{\bf{wxGetClientSize()}}{Returns a wxSize object}
+\end{twocollist}}
+}
+
\membersection{wxWindow::GetConstraints}\label{wxwindowgetconstraints}
\constfunc{wxLayoutConstraints*}{GetConstraints}{\void}
Returns a pointer to the button which is the default for this window, or NULL.
+\membersection{wxWindow::GetDropTarget}\label{wxwindowgetdroptarget}
+
+\constfunc{wxDropTarget*}{GetDropTarget}{\void}
+
+Returns the associated drop target, which may be NULL.
+
+\wxheading{See also}
+
+\helpref{wxWindow::SetDropTarget}{wxwindowsetdroptarget},
+\helpref{Drag and drop overview}{wxdndoverview}
+
\membersection{wxWindow::GetEventHandler}\label{wxwindowgeteventhandler}
\constfunc{wxEvtHandler*}{GetEventHandler}{\void}
\membersection{wxWindow::GetFont}\label{wxwindowgetfont}
-\constfunc{wxFont*}{GetFont}{\void}
+\constfunc{wxFont\&}{GetFont}{\void}
-Returns a pointer to the font for this window.
+Returns a reference to the font for this window.
\wxheading{See also}
\constfunc{void*}{GetHandle}{\void}
Returns the platform-specific handle of the physical window. Cast it to an appropriate
-handle, such as {\bf HWND} for Windows or {\bf Widget} for Motif.
+handle, such as {\bf HWND} for Windows, {\bf Widget} for Motif or {\bf GtkWidget} for GTK.
\membersection{wxWindow::GetId}\label{wxwindowgetid}
\wxheading{Remarks}
-Each window has an integer identifier. If the application has not provided one,
-an identifier will be generated.
-
-TODO: perhaps there should be a default identifier for each class, rather
-choosing one, which could clash with other ones.
+Each window has an integer identifier. If the application has not provided one
+(or the default Id -1) an unique identifier with a negative value will be generated.
\wxheading{See also}
-\helpref{wxWindow::SetId}{wxwindowsetid}
+\helpref{wxWindow::SetId}{wxwindowsetid}\rtfsp
+\helpref{Window identifiers}{windowids}
\membersection{wxWindow::GetPosition}
\docparam{y}{Receives the y position of the window.}
+\pythonnote{In place of a single overloaded method name, wxPython
+implements the following methods:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{\bf{GetPosition()}}{Returns a wxPoint}
+\twocolitem{\bf{GetPositionTuple()}}{Returns a tuple (x, y)}
+\end{twocollist}}
+}
+
\membersection{wxWindow::GetLabel}
-\constfunc{virtual wxString\& }{GetLabel}{\void}
+\constfunc{virtual wxString }{GetLabel}{\void}
Generic way of getting a label from any window, for
identification purposes.
\membersection{wxWindow::GetName}\label{wxwindowgetname}
-\constfunc{virtual wxString\& }{GetName}{\void}
+\constfunc{virtual wxString }{GetName}{\void}
Returns the window's name.
Returns the parent of the window, or NULL if there is no parent.
-\membersection{wxWindow::GetReturnCode}\label{wxwindowgetreturncode}
-
-\func{int}{GetReturnCode}{\void}
+\membersection{wxWindow::GetRect}\label{wxwindowgetrect}
-Gets the return code for this window.
+\constfunc{virtual wxRect}{GetRect}{\void}
-\wxheading{Remarks}
-
-A return code is normally associated with a modal dialog, where \helpref{wxDialog::ShowModal}{wxdialogshowmodal} returns
-a code to the application.
-
-\wxheading{See also}
-
-\helpref{wxWindow::SetReturnCode}{wxwindowsetreturncode}, \helpref{wxDialog::ShowModal}{wxdialogshowmodal},\rtfsp
-\helpref{wxDialog::EndModal}{wxdialogendmodal}
+Returns the size and position of the window as a \helpref{wxRect}{wxrect} object.
\membersection{wxWindow::GetScrollThumb}\label{wxwindowgetscrollthumb}
\helpref{wxWindow::SetScrollbar}{wxwindowsetscrollbar}
-\membersection{wxWindow::GetSize}
+\membersection{wxWindow::GetSize}\label{wxwindowgetsize}
\constfunc{virtual void}{GetSize}{\param{int* }{width}, \param{int* }{height}}
+\constfunc{virtual wxSize}{GetSize}{\void}
+
This gets the size of the entire window in pixels.
\wxheading{Parameters}
\docparam{height}{Receives the window height.}
+\pythonnote{In place of a single overloaded method name, wxPython
+implements the following methods:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{\bf{GetSize()}}{Returns a wxSize}
+\twocolitem{\bf{GetSizeTuple()}}{Returns a 2-tuple (width, height)}
+\end{twocollist}}
+}
+
\membersection{wxWindow::GetTextExtent}
\constfunc{virtual void}{GetTextExtent}{\param{const wxString\& }{string}, \param{int* }{x}, \param{int* }{y},
\docparam{use16}{If TRUE, {\it string} contains 16-bit characters. The default is FALSE.}
+
+\pythonnote{In place of a single overloaded method name, wxPython
+implements the following methods:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{\bf{GetTextExtent(string)}}{Returns a 2-tuple, (width, height)}
+\twocolitem{\bf{GetFullTextExtent(string, font=NULL)}}{Returns a
+4-tuple, (width, height, descent, externalLeading) }
+\end{twocollist}}
+}
+
+
\membersection{wxWindow::GetTitle}\label{wxwindowgettitle}
\func{virtual wxString}{GetTitle}{\void}
\helpref{wxWindow::SetTitle}{wxwindowsettitle}
+\membersection{wxWindow::GetUpdateRegion}\label{wxwindowgetupdateregion}
+
+\constfunc{virtual wxRegion}{GetUpdateRegion}{\void}
+
+Returns the region specifying which parts of the window have been damaged. Should
+only be called within an \helpref{OnPaint}{wxwindowonpaint} event handler.
+
+\wxheading{See also}
+
+\helpref{wxRegion}{wxregion}, \helpref{wxRegionIterator}{wxregioniterator}, \helpref{wxWindow::OnPaint}{wxwindowonpaint}
+
+\membersection{wxWindow::GetValidator}\label{wxwindowgetvalidator}
+
+\constfunc{wxValidator*}{GetValidator}{\void}
+
+Returns a pointer to the current validator for the window, or NULL if there is none.
+
\membersection{wxWindow::GetWindowStyleFlag}
\constfunc{long}{GetWindowStyleFlag}{\void}
-Gets the window style that was passed to the consructor or {\bf Create} member.
+Gets the window style that was passed to the consructor or {\bf Create} member.
+{\bf GetWindowStyle} is synonymous.
\membersection{wxWindow::InitDialog}\label{wxwindowinitdialog}
Returns TRUE if the window is shown, FALSE if it has been hidden.
+\membersection{wxWindow::IsTopLevel}\label{wxwindowistoplevel}
+
+\constfunc{bool}{IsTopLevel}{\void}
+
+Returns TRUE if the given window is a top-level one. Currently all frames and
+dialogs are considered to be top-level windows (even if they have a parent
+window).
+
\membersection{wxWindow::Layout}\label{wxwindowlayout}
\func{void}{Layout}{\void}
-Invokes the constraint-based layout algorithm for this window. It is called
-automatically by the default {\bf wxWindow::OnSize} member.
+Invokes the constraint-based layout algorithm for this window.
+
+See \helpref{wxWindow::SetAutoLayout}{wxwindowsetautolayout} on when
+this function gets called automatically using auto layout.
\membersection{wxWindow::LoadFromResource}\label{wxwindowloadfromresource}
TRUE if the operation succeeded, otherwise FALSE.
-\wxheading{Remarks}
-
-TODO
-
-\wxheading{See also}
-
-TODO
-
\membersection{wxWindow::Lower}\label{wxwindowlower}
\func{void}{Lower}{\void}
\func{virtual void}{MakeModal}{\param{const bool }{flag}}
Disables all other windows in the application so that
-the user can only interact with this window.
+the user can only interact with this window. (This function
+is not implemented anywhere).
\wxheading{Parameters}
\func{void}{Move}{\param{int}{ x}, \param{int}{ y}}
+\func{void}{Move}{\param{const wxPoint\&}{ pt}}
+
Moves the window to the given position.
\wxheading{Parameters}
\docparam{y}{Required y position.}
+\docparam{pt}{\helpref{wxPoint}{wxpoint} object representing the position.}
+
\wxheading{Remarks}
Implementations of SetSize can also implicitly implement the
\helpref{wxWindow::SetSize}{wxwindowsetsize}
+\pythonnote{In place of a single overloaded method name, wxPython
+implements the following methods:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{\bf{Move(point)}}{Accepts a wxPoint}
+\twocolitem{\bf{MoveXY(x, y)}}{Accepts a pair of integers}
+\end{twocollist}}
+}
+
\membersection{wxWindow::OnActivate}\label{wxwindowonactivate}
\func{void}{OnActivate}{\param{wxActivateEvent\&}{ event}}
\func{void}{OnChar}{\param{wxKeyEvent\&}{ event}}
-Called when the user has pressed a key.
+Called when the user has pressed a key that is not a modifier (SHIFT, CONTROL or ALT).
\wxheading{Parameters}
Note that the ASCII values do not have explicit key codes: they are passed as ASCII
values.
+Note that not all keypresses can be intercepted this way. If you wish to intercept modifier
+keypresses, then you will need to use \helpref{wxWindow::OnKeyDown}{wxwindowonkeydown} or
+\helpref{wxWindow::OnKeyUp}{wxwindowonkeyup}.
+
Most, but not all, windows allow keypresses to be intercepted.
\wxheading{See also}
+\helpref{wxWindow::OnKeyDown}{wxwindowonkeydown}, \helpref{wxWindow::OnKeyUp}{wxwindowonkeyup},\rtfsp
\helpref{wxKeyEvent}{wxkeyevent}, \helpref{wxWindow::OnCharHook}{wxwindowoncharhook},\rtfsp
\helpref{Event handling overview}{eventhandlingoverview}
values.
This function is only relevant to top-level windows (frames and dialogs), and under
-Windows only.
+Windows only. Under GTK the normal EVT\_CHAR\_ event has the functionality, i.e.
+you can intercepts it and if you don't call \helpref{wxEvent::Skip}{wxeventskip}
+the window won't get the event.
\wxheading{See also}
Called when the user has tried to close a a frame
or dialog box using the window manager (X) or system menu (Windows).
-{\bf Note:} This is an obsolete function retained for backward compatibility.
+{\bf Note:} This is an obsolete function.
It is superceded by the \helpref{wxWindow::OnCloseWindow}{wxwindowonclosewindow} event
handler.
attempt will be ignored. Do not delete the window from within this handler, although
you may delete other windows.
-\wxheading{Remarks}
-
-Derive your own class to handle this message. The default handler returns FALSE.
-
\wxheading{See also}
\helpref{Window deletion overview}{windowdeletionoverview},\rtfsp
destroy the window using \helpref{wxWindow::Destroy}{wxwindowdestroy}.
If not, it is up to you whether you respond by destroying the window.
+(Note: GetForce is now superceded by CanVeto. So to test whether forced destruction of
+the window is required, test for the negative of CanVeto. If CanVeto returns FALSE,
+it is not possible to skip window deletion.)
+
+If you don't destroy the window, you should call \helpref{wxCloseEvent::Veto}{wxcloseeventveto} to
+let the calling code know that you did not destroy the window. This allows the \helpref{wxWindow::Close}{wxwindowclose} function
+to return TRUE or FALSE depending on whether the close instruction was honoured or not.
+
\wxheading{Remarks}
The \helpref{wxWindow::OnClose}{wxwindowonclose} virtual function remains
\helpref{wxWindow::Close}{wxwindowclose},\rtfsp
\helpref{wxWindow::OnClose}{wxwindowonclose},\rtfsp
\helpref{wxWindow::Destroy}{wxwindowdestroy},\rtfsp
-\helpref{wxCloseEvent}{wxcloseevent}
+\helpref{wxCloseEvent}{wxcloseevent},\rtfsp
+\helpref{wxApp::OnQueryEndSession}{wxapponqueryendsession},\rtfsp
+\helpref{wxApp::OnEndSession}{wxapponendsession}
\membersection{wxWindow::OnDropFiles}\label{wxwindowondropfiles}
\wxheading{Remarks}
-This event is only generated under Windows.
+This event is only generated under Windows. It is therefore recommended that
+you set the text background colour explicitly in order to prevent flicker.
+The default background colour under GTK is grey.
To intercept this event, use the EVT\_ERASE\_BACKGROUND macro in an event table definition.
\helpref{wxEraseEvent}{wxeraseevent}, \helpref{Event handling overview}{eventhandlingoverview}
+\membersection{wxWindow::OnKeyDown}\label{wxwindowonkeydown}
+
+\func{void}{OnKeyDown}{\param{wxKeyEvent\&}{ event}}
+
+Called when the user has pressed a key, before it is translated into an ASCII value using other
+modifier keys that might be pressed at the same time.
+
+\wxheading{Parameters}
+
+\docparam{event}{Object containing keypress information. See \helpref{wxKeyEvent}{wxkeyevent} for
+details about this class.}
+
+\wxheading{Remarks}
+
+This member function is called in response to a key down event. To intercept this event,
+use the EVT\_KEY\_DOWN macro in an event table definition. Your {\bf OnKeyDown} handler may call this
+default function to achieve default keypress functionality.
+
+Note that not all keypresses can be intercepted this way. If you wish to intercept special
+keys, such as shift, control, and function keys, then you will need to use \helpref{wxWindow::OnKeyDown}{wxwindowonkeydown} or
+\helpref{wxWindow::OnKeyUp}{wxwindowonkeyup}.
+
+Most, but not all, windows allow keypresses to be intercepted.
+
+\wxheading{See also}
+
+\helpref{wxWindow::OnChar}{wxwindowonchar}, \helpref{wxWindow::OnKeyUp}{wxwindowonkeyup},\rtfsp
+\helpref{wxKeyEvent}{wxkeyevent}, \helpref{wxWindow::OnCharHook}{wxwindowoncharhook},\rtfsp
+\helpref{Event handling overview}{eventhandlingoverview}
+
+\membersection{wxWindow::OnKeyUp}\label{wxwindowonkeyup}
+
+\func{void}{OnKeyUp}{\param{wxKeyEvent\&}{ event}}
+
+Called when the user has released a key.
+
+\wxheading{Parameters}
+
+\docparam{event}{Object containing keypress information. See \helpref{wxKeyEvent}{wxkeyevent} for
+details about this class.}
+
+\wxheading{Remarks}
+
+This member function is called in response to a key up event. To intercept this event,
+use the EVT\_KEY\_UP macro in an event table definition. Your {\bf OnKeyUp} handler may call this
+default function to achieve default keypress functionality.
+
+Note that not all keypresses can be intercepted this way. If you wish to intercept special
+keys, such as shift, control, and function keys, then you will need to use \helpref{wxWindow::OnKeyDown}{wxwindowonkeydown} or
+\helpref{wxWindow::OnKeyUp}{wxwindowonkeyup}.
+
+Most, but not all, windows allow key up events to be intercepted.
+
+\wxheading{See also}
+
+\helpref{wxWindow::OnChar}{wxwindowonchar}, \helpref{wxWindow::OnKeyDown}{wxwindowonkeydown},\rtfsp
+\helpref{wxKeyEvent}{wxkeyevent}, \helpref{wxWindow::OnCharHook}{wxwindowoncharhook},\rtfsp
+\helpref{Event handling overview}{eventhandlingoverview}
+
\membersection{wxWindow::OnKillFocus}\label{wxwindowonkillfocus}
\func{void}{OnKillFocus}{\param{wxFocusEvent\& }{event}}
\membersection{wxWindow::OnIdle}\label{wxwindowonidle}
-\func{void}{Onidle}{\param{wxIdleEvent\& }{event}}
+\func{void}{OnIdle}{\param{wxIdleEvent\& }{event}}
Provide this member function for any processing which needs to be done
when the application is idle.
some calculations using the current view position to obtain logical,
scrolled units.
-Here is an example of using the \helpref{wxUpdateIterator}{wxupdateiterator} class:
+Here is an example of using the \helpref{wxRegionIterator}{wxregioniterator} class:
{\small%
\begin{verbatim}
ViewStart(&vbX,&vbY);
int vX,vY,vW,vH; // Dimensions of client area in pixels
- wxUpdateIterator upd(this); // get the update rect list
+ wxRegionIterator upd(GetUpdateRegion()); // get the update rect list
while (upd)
{
\func{void}{OnSysColourChanged}{\param{wxOnSysColourChangedEvent\& }{event}}
-Called when the user has changed the system colours.
+Called when the user has changed the system colours. Windows only.
\wxheading{Parameters}
\wxheading{See also}
-\helpref{wxMenu}{wxmenu}, \helpref{wxWindow::FakePopupMenu}{wxwindowfakepopupmenu}
+\helpref{wxMenu}{wxmenu}
+
+\wxheading{Remarks}
+
+Just before the menu is popped up, \helpref{wxMenu::UpdateUI}{wxmenuupdateui} is called
+to ensure that the menu items are in the correct state.
\membersection{wxWindow::PushEventHandler}\label{wxwindowpusheventhandler}
\docparam{child}{Child window to remove.}
-\membersection{wxWindow::ScreenToClient}
+\membersection{wxWindow::ScreenToClient}\label{wxwindowscreentoclient}
\constfunc{virtual void}{ScreenToClient}{\param{int* }{x}, \param{int* }{y}}
+\constfunc{virtual wxPoint}{ScreenToClient}{\param{const wxPoint\& }{pt}}
+
Converts from screen to client window coordinates.
\wxheading{Parameters}
\docparam{y}{Stores the screen x coordinate and receives the client x coordinate.}
+\docparam{pt}{The screen position for the second form of the function.}
+
+\pythonnote{In place of a single overloaded method name, wxPython
+implements the following methods:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{\bf{ScreenToClient(point)}}{Accepts and returns a wxPoint}
+\twocolitem{\bf{ScreenToClientXY(x, y)}}{Returns a 2-tuple, (x, y)}
+\end{twocollist}}
+}
+
+
\membersection{wxWindow::ScrollWindow}\label{wxwindowscrollwindow}
\func{virtual void}{ScrollWindow}{\param{int }{dx}, \param{int }{dy}, \param{const wxRect*}{ rect = NULL}}
-Physically scrolls the pixels in the window.
+Physically scrolls the pixels in the window and move child windows accordingly.
\wxheading{Parameters}
\docparam{rect}{Rectangle to invalidate. If this is NULL, the whole window is invalidated. If you
pass a rectangle corresponding to the area of the window exposed by the scroll, your painting handler
-can optimise painting by checking for the invalidated region.}
+can optimise painting by checking for the invalidated region. This paramter is ignored under GTK,
+instead the regions to be invalidated are calculated automatically. }
\wxheading{Remarks}
-Available only under Windows.
-
Use this function to optimise your scrolling implementations, to minimise the area that must be
-redrawn.
+redrawn. Note that it is rarely required to call this function from a user program.
\membersection{wxWindow::SetAcceleratorTable}\label{wxwindowsetacceleratortable}
\docparam{autoLayout}{Set this to TRUE if you wish the Layout function to be called
from within wxWindow::OnSize functions.}
+\wxheading{Remarks}
+
+Note that this function is actually disabled for wxWindow and only indirectly
+takes affect for children of wxDialog, wxFrame, wxNotebook and wxSplitterWindow.
+
\wxheading{See also}
\helpref{wxWindow::SetConstraints}{wxwindowsetconstraints}
\wxheading{Remarks}
The background colour is usually painted by the default\rtfsp
-\helpref{wxWindow::OnEraseBackground}{wxwindowonerasebackground} event handler function.
+\helpref{wxWindow::OnEraseBackground}{wxwindowonerasebackground} event handler function
+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
+calling this function.
+
+Note that when using this functions under GTK, you will disable the so called "themes",
+i.e. the user chosen apperance of windows and controls, including the themes of
+their parent windows.
\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::Refresh}{wxwindowrefresh},\rtfsp
\helpref{wxWindow::OnEraseBackground}{wxwindowonerasebackground}
+\membersection{wxWindow::SetClientSize}\label{wxwindowsetclientsize}
+
+\func{virtual void}{SetClientSize}{\param{int}{ width}, \param{int}{ height}}
+
+\func{virtual void}{SetClientSize}{\param{const wxSize\&}{ size}}
+
+This sets the size of the window client area in pixels. Using this function to size a window
+tends to be more device-independent than \helpref{wxWindow::SetSize}{wxwindowsetsize}, since the application need not
+worry about what dimensions the border or title bar have when trying to fit the window
+around panel items, for example.
+
+\wxheading{Parameters}
+
+\docparam{width}{The required client area width.}
+
+\docparam{height}{The required client area height.}
+
+\docparam{size}{The required client size.}
+
+\pythonnote{In place of a single overloaded method name, wxPython
+implements the following methods:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{\bf{SetClientSize(size)}}{Accepts a wxSize}
+\twocolitem{\bf{SetClientSizeWH(width, height)}}{}
+\end{twocollist}}
+}
+
+\membersection{wxWindow::SetCursor}\label{wxwindowsetcursor}
+
+\func{virtual void}{SetCursor}{\param{const wxCursor\&}{cursor}}
+
+Sets the window's cursor. Notice that setting the cursor for this window does
+not set it for its children so you'll need to explicitly call SetCursor() for
+them too if you need it.
+
+\wxheading{Parameters}
+
+\docparam{cursor}{Specifies the cursor that the window should normally display.}
+
+\wxheading{See also}
+
+\helpref{::wxSetCursor}{wxsetcursor}, \helpref{wxCursor}{wxcursor}
+
+\membersection{wxWindow::SetEventHandler}\label{wxwindowseteventhandler}
+
+\func{void}{SetEventHandler}{\param{wxEvtHandler* }{handler}}
+
+Sets the event handler for this window.
+
+\wxheading{Parameters}
+
+\docparam{handler}{Specifies the handler to be set.}
+
+\wxheading{Remarks}
+
+An event handler is an object that is capable of processing the events
+sent to a window. By default, the window is its own event handler, but
+an application may wish to substitute another, for example to allow
+central implementation of event-handling for a variety of different
+window classes.
+
+It is usually better to use \helpref{wxWindow::PushEventHandler}{wxwindowpusheventhandler} since
+this sets up a chain of event handlers, where an event not handled by one event handler is
+handed to the next one in the chain.
+
+\wxheading{See also}
+
+\helpref{wxWindow::GetEventHandler}{wxwindowgeteventhandler},\rtfsp
+\helpref{wxWindow::PushEventHandler}{wxwindowpusheventhandler},\rtfsp
+\helpref{wxWindow::PopEventHandler}{wxwindowpusheventhandler},\rtfsp
+\helpref{wxEvtHandler::ProcessEvent}{wxevthandlerprocessevent},\rtfsp
+\helpref{wxEvtHandler}{wxevthandler}
+
\membersection{wxWindow::SetConstraints}\label{wxwindowsetconstraints}
\func{void}{SetConstraints}{\param{wxLayoutConstraints* }{constraints}}
the constraints automatically in OnSize; otherwise, you must
override OnSize and call Layout explicitly.
+\membersection{wxWindow::SetDropTarget}\label{wxwindowsetdroptarget}
+
+\func{void}{SetDropTarget}{\param{wxDropTarget*}{ target}}
+
+Associates a drop target with this window.
+
+If the window already has a drop target, it is deleted.
+
+\wxheading{See also}
+
+\helpref{wxWindow::GetDropTarget}{wxwindowgetdroptarget},
+\helpref{Drag and drop overview}{wxdndoverview}
+
\membersection{wxWindow::SetFocus}\label{wxwindowsetfocus}
\func{virtual void}{SetFocus}{\void}
to the window class; it may be the text colour or other colour, or it may not
be used at all.
+Note that when using this functions under GTK, you will disable the so called "themes",
+i.e. the user chosen apperance of windows and controls, including the themes of
+their parent windows.
+
\wxheading{See also}
\helpref{wxWindow::GetForegroundColour}{wxwindowgetforegroundcolour},\rtfsp
an identifier will be generated. Normally, the identifier should be provided
on creation and should not be modified subsequently.
-TODO: perhaps there should be a default identifier for each class, rather
-choosing one, which could clash with other ones.
-
\wxheading{See also}
-\helpref{wxWindow::GetId}{wxwindowgetid}
-
+\helpref{wxWindow::GetId}{wxwindowgetid},\rtfsp
+\helpref{Window identifiers}{windowids}
\membersection{wxWindow::SetName}\label{wxwindowsetname}
\helpref{wxWindow::GetName}{wxwindowgetname}
-\membersection{wxWindow::SetReturnCode}\label{wxwindowsetreturncode}
-
-\func{void}{SetReturnCode}{\param{int }{retCode}}
-
-Sets the return code for this window.
+\membersection{wxWindow::SetPalette}\label{wxwindowsetpalette}
-\wxheading{Parameters}
-
-\docparam{retCode}{The integer return code, usually a control identifier.}
-
-\wxheading{Remarks}
-
-A return code is normally associated with a modal dialog, where \helpref{wxDialog::ShowModal}{wxdialogshowmodal} returns
-a code to the application. The function \helpref{wxDialog::EndModal}{wxdialogendmodal} calls {\bf SetReturnCode}.
-
-\wxheading{See also}
+\func{virtual void}{SetPalette}{\param{wxPalette* }{palette}}
-\helpref{wxWindow::GetReturnCode}{wxwindowgetreturncode}, \helpref{wxDialog::ShowModal}{wxdialogshowmodal},\rtfsp
-\helpref{wxDialog::EndModal}{wxdialogendmodal}
+Obsolete - use \helpref{wxDC::SetPalette}{wxdcsetpalette} instead.
\membersection{wxWindow::SetScrollbar}\label{wxwindowsetscrollbar}
\func{virtual void}{SetSize}{\param{int}{ x}, \param{int}{ y}, \param{int}{ width}, \param{int}{ height},
\param{int}{ sizeFlags = wxSIZE\_AUTO}}
+\func{virtual void}{SetSize}{\param{const wxRect\&}{ rect}}
+
Sets the size and position of the window in pixels.
\func{virtual void}{SetSize}{\param{int}{ width}, \param{int}{ height}}
+\func{virtual void}{SetSize}{\param{const wxSize\&}{ size}}
+
Sets the size of the window in pixels.
\wxheading{Parameters}
\docparam{height}{Required height position in pixels, or -1 to indicate that the existing
value should be used.}
+\docparam{size}{\helpref{wxSize}{wxsize} object for setting the size.}
+
+\docparam{rect}{\helpref{wxRect}{wxrect} object for setting the position and size.}
+
\docparam{sizeFlags}{Indicates the interpretation of other parameters. It is a bit list of the following:
{\bf wxSIZE\_AUTO\_WIDTH}: a -1 width value is taken to indicate
\helpref{wxWindow::Move}{wxwindowmove}
+\pythonnote{In place of a single overloaded method name, wxPython
+implements the following methods:\par
+\indented{2cm}{\begin{twocollist}
+\twocolitem{\bf{SetDimensions(x, y, width, height, sizeFlags=wxSIZE_AUTO)}}{}
+\twocolitem{\bf{SetSize(size)}}{}
+\twocolitem{\bf{SetPosition(point)}}{}
+\end{twocollist}}
+}
+
\membersection{wxWindow::SetSizeHints}\label{wxwindowsetsizehints}
\func{virtual void}{SetSizeHints}{\param{int}{ minW=-1}, \param{int}{ minH=-1}, \param{int}{ maxW=-1}, \param{int}{ maxH=-1},
The resizing increments are only significant under Motif or Xt.
-\membersection{wxWindow::SetClientSize}
-
-\func{virtual void}{SetClientSize}{\param{int}{ width}, \param{int}{ height}}
-
-This sets the size of the window client area in pixels. Using this function to size a window
-tends to be more device-independent than \helpref{wxWindow::SetSize}{wxwindowsetsize}, since the application need not
-worry about what dimensions the border or title bar have when trying to fit the window
-around panel items, for example.
-
-\wxheading{Parameters}
-
-\docparam{width}{The required client area width.}
-
-\docparam{height}{The required client area height.}
-
-\membersection{wxWindow::SetPalette}
-
-\func{virtual void}{SetPalette}{\param{wxPalette* }{palette}}
-
-Obsolete - use \helpref{wxDC::SetPalette}{wxdcsetpalette} instead.
-
-\membersection{wxWindow::SetCursor}\label{wxwindowsetcursor}
-
-\func{virtual void}{SetCursor}{\param{const wxCursor\&}{cursor}}
-
-Sets the window's cursor.
-
-\wxheading{Parameters}
-
-\docparam{cursor}{Specifies the cursor that the window should normally display.}
-
-\wxheading{Remarks}
-
-Under Windows, you sometimes need to call ::wxSetCursor in addition to this
-function if you want the cursor to change immediately, because under Windows,
-wxWindows only sets the global cursor when it detects mouse movement.
-
-\wxheading{See also}
-
-\helpref{::wxSetCursor}{wxsetcursor}, \helpref{wxCursor}{wxcursor}
-
-\membersection{wxWindow::SetEventHandler}\label{wxwindowseteventhandler}
-
-\func{void}{SetEventHandler}{\param{wxEvtHandler* }{handler}}
-
-Sets the event handler for this window.
-
-\wxheading{Parameters}
-
-\docparam{handler}{Specifies the handler to be set.}
-
-\wxheading{Remarks}
-
-An event handler is an object that is capable of processing the events
-sent to a window. By default, the window is its own event handler, but
-an application may wish to substitute another, for example to allow
-central implementation of event-handling for a variety of different
-window classes.
-
-It is usually better to use \helpref{wxWindow::PushEventHandler}{wxwindowpusheventhandler} since
-this sets up a chain of event handlers, where an event not handled by one event handler is
-handed to the next one in the chain.
-
-\wxheading{See also}
-
-\helpref{wxWindow::GetEventHandler}{wxwindowgeteventhandler},\rtfsp
-\helpref{wxWindow::PushEventHandler}{wxwindowpusheventhandler},\rtfsp
-\helpref{wxWindow::PopEventHandler}{wxwindowpusheventhandler},\rtfsp
-\helpref{wxEvtHandler::ProcessEvent}{wxevthandlerprocessevent},\rtfsp
-\helpref{wxEvtHandler}{wxevthandler}
-
\membersection{wxWindow::SetTitle}\label{wxwindowsettitle}
\func{virtual void}{SetTitle}{\param{const wxString\& }{title}}
\helpref{wxWindow::GetTitle}{wxwindowgettitle}
-\membersection{wxWindow::Show}
+\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::Show}\label{wxwindowshow}
\func{virtual bool}{Show}{\param{const bool}{ show}}