\section{\class{wxSashWindow}}\label{wxsashwindow}

wxSashWindow allows any of its edges to have a sash which can be dragged
to resize the window. The actual content window will be created by the application
as a child of wxSashWindow. The window (or an ancestor) will be notified of a drag
via a \helpref{wxSashEvent}{wxsashevent} notification.

\wxheading{Derived from}

\helpref{wxWindow}{wxwindow}\\
\helpref{wxEvtHandler}{wxevthandler}\\
\helpref{wxObject}{wxobject}

\wxheading{Include files}

<wx/sashwin.h>

\wxheading{Window styles}

The following styles apply in addition to the normal wxWindow styles.

\twocolwidtha{5cm}%
\begin{twocollist}\itemsep=0pt
\twocolitem{\windowstyle{wxSW\_3D}}{Draws a 3D effect sash and border.}
\twocolitem{\windowstyle{wxSW\_3DSASH}}{Draws a 3D effect sash.}
\twocolitem{\windowstyle{wxSW\_3DBORDER}}{Draws a 3D effect border.}
\twocolitem{\windowstyle{wxSW\_BORDER}}{Draws a thin black border.}
\end{twocollist}

See also \helpref{window styles overview}{windowstyles}.

\wxheading{Event handling}

\twocolwidtha{7cm}%
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf EVT\_SASH\_DRAGGED(id, func)}}{Process a wxEVT\_SASH\_DRAGGED event,
when the user has finished dragging a sash.}
\twocolitem{{\bf EVT\_SASH\_DRAGGED\_RANGE(id1, id2, func)}}{Process a wxEVT\_SASH\_DRAGGED\_RANGE event,
when the user has finished dragging a sash. The event handler is called when windows with ids in the
given range have their sashes dragged.}
\end{twocollist}

\wxheading{Data types}

{\small
\begin{verbatim}
enum wxSashEdgePosition {
    wxSASH_TOP = 0,
    wxSASH_RIGHT,
    wxSASH_BOTTOM,
    wxSASH_LEFT,
    wxSASH_NONE = 100
};
\end{verbatim}
}

\wxheading{See also}

\helpref{wxSashEvent}{wxsashevent}, \helpref{wxSashLayoutWindow}{wxsashlayoutwindow}, \helpref{Event handling overview}{eventhandlingoverview}

\latexignore{\rtfignore{\wxheading{Members}}}

\membersection{wxSashWindow::wxSashWindow}

\func{}{wxSashWindow}{\void}

Default constructor.

\func{}{wxSashWindow}{\param{wxWindow*}{ parent}, \param{wxWindowID }{id},
 \param{const wxPoint\& }{pos = wxDefaultPosition},
 \param{const wxSize\& }{size = wxDefaultSize},
 \param{long }{style = wxCLIP\_CHILDREN \pipe wxSW\_3D},
 \param{const wxString\& }{name = "sashWindow"}}

Constructs a sash window, which can be a child of a frame, dialog or any other non-control window.

\wxheading{Parameters}

\docparam{parent}{Pointer to a parent window.}

\docparam{id}{Window identifier. If -1, will automatically create an identifier.}

\docparam{pos}{Window position. wxDefaultPosition is (-1, -1) which indicates that wxSashWindows
should generate a default position for the window. If using the wxSashWindow class directly, supply
an actual position.}

\docparam{size}{Window size. wxDefaultSize is (-1, -1) which indicates that wxSashWindows
should generate a default size for the window.}

\docparam{style}{Window style. For window styles, please see \helpref{wxSashWindow}{wxsashwindow}.}

\docparam{name}{Window name.}

\membersection{wxSashWindow::\destruct{wxSashWindow}}

\func{}{\destruct{wxSashWindow}}{\void}

Destructor.

\membersection{wxSashWindow::GetSashVisible}\label{wxsashwindowgetsashvisible}

\constfunc{bool}{GetSashVisible}{\param{wxSashEdgePosition }{edge}}

Returns true if a sash is visible on the given edge, false otherwise.

\wxheading{Parameters}

\docparam{edge}{Edge. One of wxSASH\_TOP, wxSASH\_RIGHT, wxSASH\_BOTTOM, wxSASH\_LEFT.}

\wxheading{See also}

\helpref{wxSashWindow::SetSashVisible}{wxsashwindowsetsashvisible}

\membersection{wxSashWindow::GetMaximumSizeX}\label{wxsashwindowgetmaximumsizex}

\constfunc{int}{GetMaximumSizeX}{\void}

Gets the maximum window size in the x direction.

\membersection{wxSashWindow::GetMaximumSizeY}\label{wxsashwindowgetmaximumsizey}

\constfunc{int}{GetMaximumSizeY}{\void}

Gets the maximum window size in the y direction.

\membersection{wxSashWindow::GetMinimumSizeX}\label{wxsashwindowgetminimumsizex}

\func{int}{GetMinimumSizeX}{\void}

Gets the minimum window size in the x direction.

\membersection{wxSashWindow::GetMinimumSizeY}\label{wxsashwindowgetminimumsizey}

\constfunc{int}{GetMinimumSizeY}{\param{int}{ min}}

Gets the minimum window size in the y direction.

\membersection{wxSashWindow::HasBorder}\label{wxsashwindowhasborder}

\constfunc{bool}{HasBorder}{\param{wxSashEdgePosition }{edge}}

Returns true if the sash has a border, false otherwise.

\wxheading{Parameters}

\docparam{edge}{Edge. One of wxSASH\_TOP, wxSASH\_RIGHT, wxSASH\_BOTTOM, wxSASH\_LEFT.}

\wxheading{See also}

\helpref{wxSashWindow::SetSashBorder}{wxsashwindowsetsashborder}

\membersection{wxSashWindow::SetMaximumSizeX}\label{wxsashwindowsetmaximumsizex}

\func{void}{SetMaximumSizeX}{\param{int}{ min}}

Sets the maximum window size in the x direction.

\membersection{wxSashWindow::SetMaximumSizeY}\label{wxsashwindowsetmaximumsizey}

\func{void}{SetMaximumSizeY}{\param{int}{ min}}

Sets the maximum window size in the y direction.

\membersection{wxSashWindow::SetMinimumSizeX}\label{wxsashwindowsetminimumsizex}

\func{void}{SetMinimumSizeX}{\param{int}{ min}}

Sets the minimum window size in the x direction.

\membersection{wxSashWindow::SetMinimumSizeY}\label{wxsashwindowsetminimumsizey}

\func{void}{SetMinimumSizeY}{\param{int}{ min}}

Sets the minimum window size in the y direction.

\membersection{wxSashWindow::SetSashVisible}\label{wxsashwindowsetsashvisible}

\func{void}{SetSashVisible}{\param{wxSashEdgePosition }{edge}, \param{bool}{ visible}}

Call this function to make a sash visible or invisible on a particular edge.

\wxheading{Parameters}

\docparam{edge}{Edge to change. One of wxSASH\_TOP, wxSASH\_RIGHT, wxSASH\_BOTTOM, wxSASH\_LEFT.}

\docparam{visible}{true to make the sash visible, false to make it invisible.}

\wxheading{See also}

\helpref{wxSashWindow::GetSashVisible}{wxsashwindowgetsashvisible}

\membersection{wxSashWindow::SetSashBorder}\label{wxsashwindowsetsashborder}

\func{void}{SetSashBorder}{\param{wxSashEdgePosition }{edge}, \param{bool}{ hasBorder}}

Call this function to give the sash a border, or remove the border.

\wxheading{Parameters}

\docparam{edge}{Edge to change. One of wxSASH\_TOP, wxSASH\_RIGHT, wxSASH\_BOTTOM, wxSASH\_LEFT.}

\docparam{hasBorder}{true to give the sash a border visible, false to remove it.}

\wxheading{See also}

\helpref{wxSashWindow::HasBorder}{wxsashwindowhasborder}

