\section{\class{wxCheckBox}}\label{wxcheckbox}
-A checkbox is a labelled box which is either on (checkmark is visible)
-or off (no checkmark).
+A checkbox is a labelled box which by default is either on (checkmark is
+visible) or off (no checkmark). Optionally (when the wxCHK\_3STATE style flag
+is set) it can have a third state, called the mixed or undetermined state.
+Often this is used as a "Does Not Apply" state.
\wxheading{Derived from}
\helpref{wxEvtHandler}{wxevthandler}\\
\helpref{wxObject}{wxobject}
+\wxheading{Include files}
+
+<wx/checkbox.h>
+
\wxheading{Window styles}
-There are no special styles for wxCheckBox.
+\twocolwidtha{7cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxCHK\_2STATE}}{Create a 2-state checkbox. This is the default.}
+\twocolitem{\windowstyle{wxCHK\_3STATE}}{Create a 3-state checkbox.
+Not implemented in wxMGL, wxOS2 and wxGTK built against GTK+ 1.2.}
+\twocolitem{\windowstyle{wxCHK\_ALLOW\_3RD\_STATE\_FOR\_USER}}{By default a user can't set a 3-state checkbox
+to the third state. It can only be done from code. Using this flags allows the user to set the checkbox to the third state by clicking. }
+\twocolitem{\windowstyle{wxALIGN\_RIGHT}}{Makes the text appear on the left of the checkbox.}
+\end{twocollist}
See also \helpref{window styles overview}{windowstyles}.
+\wxheading{Event handling}
+
+\twocolwidtha{7cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{{\bf EVT\_CHECKBOX(id, func)}}{Process a wxEVT\_COMMAND\_CHECKBOX\_CLICKED event,
+when the checkbox is clicked.}
+\end{twocollist}
+
\wxheading{See also}
-\helpref{wxRadioButton}{wxradiobutton}
+\helpref{wxRadioButton}{wxradiobutton}, \helpref{wxCommandEvent}{wxcommandevent}
\latexignore{\rtfignore{\wxheading{Members}}}
-\membersection{wxCheckBox::wxCheckBox}\label{wxcheckboxconstr}
+\membersection{wxCheckBox::wxCheckBox}\label{wxcheckboxctor}
\func{}{wxCheckBox}{\void}
Default constructor.
-\func{}{wxCheckBox}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id},\rtfsp
+\func{}{wxCheckBox}{\param{wxWindow* }{parent}, \param{wxWindowID}{ id},\rtfsp
\param{const wxString\& }{label}, \param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
\param{const wxSize\& }{size = wxDefaultSize}, \param{long}{ style = 0},\rtfsp
\param{const wxValidator\& }{val}, \param{const wxString\& }{name = ``checkBox"}}
\helpref{wxCheckBox::Create}{wxcheckboxcreate}, \helpref{wxValidator}{wxvalidator}
-\membersection{wxCheckBox::\destruct{wxCheckBox}}
+\membersection{wxCheckBox::\destruct{wxCheckBox}}\label{wxcheckboxdtor}
\func{}{\destruct{wxCheckBox}}{\void}
\membersection{wxCheckBox::Create}\label{wxcheckboxcreate}
-\func{bool}{Create}{\param{wxWindow* }{parent}, \param{const wxWindowID}{ id},\rtfsp
+\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID}{ id},\rtfsp
\param{const wxString\& }{label}, \param{const wxPoint\& }{pos = wxDefaultPosition},\rtfsp
\param{const wxSize\& }{size = wxDefaultSize}, \param{long}{ style = 0},\rtfsp
\param{const wxValidator\& }{val}, \param{const wxString\& }{name = ``checkBox"}}
-Creates the checkbox for two-step construction. See \helpref{wxCheckBox::wxCheckBox}{wxcheckboxconstr}\rtfsp
+Creates the checkbox for two-step construction. See \helpref{wxCheckBox::wxCheckBox}{wxcheckboxctor}\rtfsp
for details.
\membersection{wxCheckBox::GetValue}\label{wxcheckboxgetvalue}
\constfunc{bool}{GetValue}{\void}
-Gets the state of the checkbox.
+Gets the state of a 2-state checkbox.
\wxheading{Return value}
-Returns TRUE if it is checked, FALSE otherwise.
+Returns \true if it is checked, \false otherwise.
+
+\membersection{wxCheckBox::Get3StateValue}\label{wxcheckboxgetthreestatevalue}
+
+\constfunc{wxCheckBoxState}{Get3StateValue}{\void}
+
+Gets the state of a 3-state checkbox.
+
+\wxheading{Return value}
+
+Returns wxCHK\_UNCHECKED when the checkbox is unchecked, wxCHK\_CHECKED
+ when it is checked and wxCHK\_UNDETERMINED when it's in the undetermined
+state. Asserts when the function is used with a 2-state checkbox.
+
+\membersection{wxCheckBox::Is3rdStateAllowedForUser}\label{wxcheckboxis3rdstateallowedforuser}
+
+\constfunc{bool}{Is3rdStateAllowedForUser}{\void}
+
+Returns whether or not the user can set the checkbox to the third state.
+
+\wxheading{Return value}
+
+Returns \true if the user can set the third state of this checkbox, \false if it can only be set
+programmatically or if it's a 2-state checkbox.
+
+\membersection{wxCheckBox::Is3State}\label{wxcheckboxis3state}
+
+\constfunc{bool}{Is3State}{\void}
+
+Returns whether or not the checkbox is a 3-state checkbox.
+
+\wxheading{Return value}
+
+Returns \true if this checkbox is a 3-state checkbox, \false if it's a 2-state checkbox.
+
+\membersection{wxCheckBox::IsChecked}\label{wxcheckboxischecked}
+
+\constfunc{bool}{IsChecked}{\void}
+
+This is just a maybe more readable synonym for
+\helpref{GetValue}{wxcheckboxgetvalue}: just as the latter, it returns
+\true if the checkbox is checked and \false otherwise.
\membersection{wxCheckBox::SetValue}\label{wxcheckboxsetvalue}
-\func{void}{SetValue}{\param{const bool}{ state}}
+\func{void}{SetValue}{\param{bool}{ state}}
-Sets the checkbox to the given state.
+Sets the checkbox to the given state. This does not cause a
+wxEVT\_COMMAND\_CHECKBOX\_CLICKED event to get emitted.
\wxheading{Parameters}
-\docparam{state}{If TRUE, the check is on, otherwise it is off.}
+\docparam{state}{If \true, the check is on, otherwise it is off.}
+
+\membersection{wxCheckBox::Set3StateValue}\label{wxcheckboxset3statevalue}
+\func{void}{Set3StateValue}{\param{const wxCheckBoxState}{ state}}
+
+Sets the checkbox to the given state. This does not cause a
+wxEVT\_COMMAND\_CHECKBOX\_CLICKED event to get emitted.
+
+\wxheading{Parameters}
+\docparam{state}{Can be one of: wxCHK\_UNCHECKED (Check is off), wxCHK\_CHECKED
+ (Check is on) or wxCHK\_UNDETERMINED (Check is mixed). Asserts when the checkbox
+ is a 2-state checkbox and setting the state to wxCHK\_UNDETERMINED.}