]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/window.tex
Made wxLayoutAlgorithm more general (copes with nested sash windows)
[wxWidgets.git] / docs / latex / wx / window.tex
index 609309b05baff59a65a06a5114ac57acda71f513..f086ccca6a1dc53a7554dc8111fdca0c0a30c0cb 100644 (file)
@@ -20,7 +20,7 @@ window class.
 for this style.}
 \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{wxRAISED\_BORDER}}{Displays a raised border.}
 \twocolitem{\windowstyle{wxSTATIC\_BORDER}}{Displays a border suitable for a static control.}
 \twocolitem{\windowstyle{wxTRANSPARENT\_WINDOW}}{The window is transparent, that is, it will not receive paint
 events. Windows only.}
@@ -147,6 +147,8 @@ Clears the window by filling it with the current background colour.
 
 \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
@@ -155,6 +157,8 @@ a screen coordinate will be passed out.}
 \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.}
+
 \membersection{wxWindow::Close}\label{wxwindowclose}
 
 \func{virtual bool}{Close}{\param{const bool}{ force = FALSE}}
@@ -185,6 +189,60 @@ Applies to managed windows (wxFrame and wxDialog classes) only.
 \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}
+
+\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}
+
 \membersection{wxWindow::Destroy}\label{wxwindowdestroy}
 
 \func{virtual bool}{Destroy}{\void}
@@ -278,6 +336,16 @@ 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}}
+
+Find a child of this window, by identifier.
+
+\func{wxWindow*}{FindWindow}{\param{const wxString\&}{ name}}
+
+Find a child of this window, by name.
+
 \membersection{wxWindow::Fit}\label{wxwindowfit}
 
 \func{virtual void}{Fit}{\void}
@@ -311,14 +379,16 @@ Returns the average character width for this window.
 
 \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.
 
@@ -340,6 +410,17 @@ Returns a pointer to the window's layout constraints, or NULL if there are none.
 
 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}
@@ -357,9 +438,9 @@ own event handler.
 
 \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}
 
@@ -463,6 +544,12 @@ name in the window constructor or via \helpref{wxWindow::SetName}{wxwindowsetnam
 
 Returns the parent of the window, or NULL if there is no parent.
 
+\membersection{wxWindow::GetRect}\label{wxwindowgetrect}
+
+\constfunc{virtual wxRect}{GetRect}{\void}
+
+Returns the size and position of the window as a \helpref{wxRect}{wxrect} object.
+
 \membersection{wxWindow::GetReturnCode}\label{wxwindowgetreturncode}
 
 \func{int}{GetReturnCode}{\void}
@@ -509,10 +596,12 @@ Returns the built-in scrollbar range.
 
 \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}
@@ -556,6 +645,17 @@ Gets the window's title. Applicable only to frames and dialogs.
 
 \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::GetWindowStyleFlag}
 
 \constfunc{long}{GetWindowStyleFlag}{\void}
@@ -657,6 +757,8 @@ the user can only interact with this window. If FALSE, the effect is reversed.}
 
 \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}
@@ -665,6 +767,8 @@ Moves the window to the given position.
 
 \docparam{y}{Required y position.}
 
+\docparam{pt}{\helpref{wxPoint}{wxpoint} object representing the position.}
+
 \wxheading{Remarks}
 
 Implementations of SetSize can also implicitly implement the
@@ -703,7 +807,7 @@ otherwise it returns FALSE (it is being deactivated).
 
 \func{void}{OnChar}{\param{wxKeyEvent\&}{ event}}
 
-Called when the user has pressed a key.
+Called when the user has pressed a key, which has been translated into an ASCII value.
 
 \wxheading{Parameters}
 
@@ -719,10 +823,15 @@ default function to achieve default keypress functionality.
 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 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::OnKeyDown}{wxwindowonkeydown}, \helpref{wxWindow::OnKeyUp}{wxwindowonkeyup},\rtfsp
 \helpref{wxKeyEvent}{wxkeyevent}, \helpref{wxWindow::OnCharHook}{wxwindowoncharhook},\rtfsp
 \helpref{Event handling overview}{eventhandlingoverview}
 
@@ -801,7 +910,7 @@ you may delete other windows.
 
 \wxheading{Remarks}
 
-Derive your own class to handle this message. The default handler returns FALSE.
+Derive your own class to handle this message. The default handler returns TRUE.
 
 \wxheading{See also}
 
@@ -826,6 +935,14 @@ using \helpref{wxCloseEvent::GetForce}{wxcloseeventgetforce}. If this is TRUE,
 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
@@ -839,22 +956,9 @@ destroying the window if it returns TRUE or if the close is being forced.
 \helpref{wxWindow::Close}{wxwindowclose},\rtfsp
 \helpref{wxWindow::OnClose}{wxwindowonclose},\rtfsp
 \helpref{wxWindow::Destroy}{wxwindowdestroy},\rtfsp
-\helpref{wxCloseEvent}{wxcloseevent}
-
-\membersection{wxWindow::OnDefaultAction}\label{wxwindowondefaultaction}
-
-\func{virtual void}{OnDefaultAction}{\param{wxControl* }{control}}
-
-Called when the user initiates the default action for a panel or
-dialog box, for example by double clicking on a listbox.
-
-\wxheading{Parameters}
-
-\docparam{control}{The control which caused the default action.}
-
-\wxheading{Remarks}
-
-TODO: eliminate this?? Or keep it for backward compatibility?
+\helpref{wxCloseEvent}{wxcloseevent},\rtfsp
+\helpref{wxApp::OnQueryEndSession}{wxapponqueryendsession},\rtfsp
+\helpref{wxApp::OnEndSession}{wxapponendsession}
 
 \membersection{wxWindow::OnDropFiles}\label{wxwindowondropfiles}
 
@@ -900,6 +1004,65 @@ To intercept this event, use the EVT\_ERASE\_BACKGROUND macro in an event table
 
 \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}}
@@ -923,7 +1086,7 @@ Most, but not all, windows respond to this 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.
@@ -1087,7 +1250,7 @@ terms of the client area, and are unscrolled, so you will need to do
 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}
@@ -1101,7 +1264,7 @@ void MyWindow::OnPaint(wxPaintEvent& event)
   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)
   {
@@ -1327,10 +1490,12 @@ functions so should not be required by the application programmer.
 
 \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}
@@ -1339,6 +1504,8 @@ Converts from screen to client window coordinates.
 
 \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.}
+
 \membersection{wxWindow::ScrollWindow}\label{wxwindowscrollwindow}
 
 \func{virtual void}{ScrollWindow}{\param{int }{dx}, \param{int }{dy}, \param{const wxRect*}{ rect = NULL}}
@@ -1362,6 +1529,12 @@ Available only under Windows.
 Use this function to optimise your scrolling implementations, to minimise the area that must be
 redrawn.
 
+\membersection{wxWindow::SetAcceleratorTable}\label{wxwindowsetacceleratortable}
+
+\func{virtual void}{SetAcceleratorTable}{\param{const wxAcceleratorTable\&}{ accel}}
+
+Sets the accelerator table for this window. See \helpref{wxAcceleratorTable}{wxacceleratortable}.
+
 \membersection{wxWindow::SetAutoLayout}\label{wxwindowsetautolayout}
 
 \func{void}{SetAutoLayout}{\param{const bool}{ autoLayout}}
@@ -1420,6 +1593,19 @@ You must call \helpref{wxWindow::SetAutoLayout}{wxwindowsetautolayout} to tell a
 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}
@@ -1600,10 +1786,8 @@ handling of pages and ranges.
 \wxheading{See also}
 
 \helpref{wxWindow::SetScrollPos}{wxwindowsetscrollpos},\rtfsp
-\helpref{wxWindow::SetScrollRange}{wxwindowsetscrollpage},\rtfsp
 \helpref{wxWindow::GetScrollPos}{wxwindowsetscrollpos},\rtfsp
-\helpref{wxWindow::GetScrollRange}{wxwindowsetscrollrange},\rtfsp
-\helpref{wxWindow::GetScrollPage}{wxwindowsetscrollrange},\rtfsp
+\helpref{wxWindow::GetScrollPage}{wxwindowsetscrollpage},\rtfsp
 \helpref{wxScrollBar}{wxscrollbar}, \helpref{wxScrolledWindow}{wxscrolledwindow}
 \end{comment}
 
@@ -1630,8 +1814,7 @@ application to take note of scrollbar attributes and redraw contents accordingly
 
 \helpref{wxWindow::SetScrollbar}{wxwindowsetscrollbar},\rtfsp
 \helpref{wxWindow::GetScrollPos}{wxwindowsetscrollpos},\rtfsp
-\helpref{wxWindow::GetScrollRange}{wxwindowsetscrollrange},\rtfsp
-\helpref{wxWindow::GetScrollThumb}{wxwindowsetscrollthumb},\rtfsp
+\helpref{wxWindow::GetScrollThumb}{wxwindowgetscrollthumb},\rtfsp
 \helpref{wxScrollBar}{wxscrollbar}, \helpref{wxScrolledWindow}{wxscrolledwindow}
 
 \begin{comment}
@@ -1662,8 +1845,7 @@ and usually the scrollbar will be automatically hidden.
 \helpref{wxWindow::SetScrollPos}{wxwindowsetscrollpos},\rtfsp
 \helpref{wxWindow::SetScrollPage}{wxwindowsetscrollpage},\rtfsp
 \helpref{wxWindow::GetScrollPos}{wxwindowsetscrollpos},\rtfsp
-\helpref{wxWindow::GetScrollRange}{wxwindowsetscrollrange},\rtfsp
-\helpref{wxWindow::GetScrollPage}{wxwindowsetscrollrange},\rtfsp
+\helpref{wxWindow::GetScrollPage}{wxwindowsetscrollpage},\rtfsp
 \helpref{wxScrollBar}{wxscrollbar}, \helpref{wxScrolledWindow}{wxscrolledwindow}
 \end{comment}
 
@@ -1672,10 +1854,14 @@ and usually the scrollbar will be automatically hidden.
 \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}
@@ -1692,6 +1878,10 @@ value should be used.}
 \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
@@ -1752,6 +1942,8 @@ The resizing increments are only significant under Motif or Xt.
 
 \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
@@ -1763,6 +1955,8 @@ around panel items, for example.
 
 \docparam{height}{The required client area height.}
 
+\docparam{size}{The required client size.}
+
 \membersection{wxWindow::SetPalette}
 
 \func{virtual void}{SetPalette}{\param{wxPalette* }{palette}}