CCheckListBox
Class
Provides the functionality of a Windows checklist box.
Syntax
class CCheckListBox : public CListBox
Members
Public Constructors
Name | Description |
---|---|
CCheckListBox::CCheckListBox |
Constructs a CCheckListBox object. |
Public Methods
Name | Description |
---|---|
CCheckListBox::Create |
Creates the Windows checklist box and attaches it to the CCheckListBox object. |
CCheckListBox::DrawItem |
Called by the framework when a visual aspect of an owner-draw list box changes. |
CCheckListBox::Enable |
Enables or disables a checklist box item. |
CCheckListBox::GetCheck |
Gets the state of an item's check box. |
CCheckListBox::GetCheckStyle |
Gets the style of the control's check boxes. |
CCheckListBox::IsEnabled |
Determines whether an item is enabled. |
CCheckListBox::MeasureItem |
Called by the framework when a list box with an owner-draw style is created. |
CCheckListBox::OnGetCheckPosition |
Called by the framework to get the position of an item's check box. |
CCheckListBox::SetCheck |
Sets the state of an item's check box. |
CCheckListBox::SetCheckStyle |
Sets the style of the control's check boxes. |
Remarks
A "checklist box" displays a list of items, such as filenames. Each item in the list has a check box next to it that the user can check or clear.
CCheckListBox
is only for owner-drawn controls because the list contains more than text strings. At its simplest, a checklist box contains text strings and check boxes, but you don't need to have text at all. For example, you could have a list of small bitmaps with a check box next to each item.
To create your own checklist box, you must derive your own class from CCheckListBox
. To derive your own class, write a constructor for the derived class, then call Create
.
If you want to handle Windows notification messages sent by a list box to its parent (usually a class derived from CDialog
), add a message-map entry and message-handler member function to the parent class for each message.
Each message-map entry takes the following form:
ON_Notification ( id
, memberFxn
)
where id
specifies the child window ID of the control sending the notification and memberFxn
is the name of the parent member function you've written to handle the notification.
The parent's function prototype is as follows:
afx_msg void memberFxn();
There's only one message-map entry that pertains specifically to CCheckListBox
(but see also the message-map entries for CListBox
):
ON_CLBN_CHKCHANGE
The user has changed the state of an item's checkbox.
If your checklist box is a default checklist box (a list of strings with the default-sized checkboxes to the left of each), you can use the default CCheckListBox::DrawItem
to draw the checklist box. Otherwise, you must override the CListBox::CompareItem
function and the CCheckListBox::DrawItem
and CCheckListBox::MeasureItem
functions.
You can create a checklist box either from a dialog template or directly in your code.
Inheritance Hierarchy
CCheckListBox
Requirements
Header: afxwin.h
CCheckListBox::CCheckListBox
Constructs a CCheckListBox
object.
CCheckListBox();
Remarks
You construct a CCheckListBox
object in two steps. First define a class derived from CCheckListBox
, then call Create
, which initializes the Windows checklist box and attaches it to the CCheckListBox
object.
Example
CCheckListBox myCheckListBox;
myCheckListBox.Create(LBS_HASSTRINGS | LBS_OWNERDRAWFIXED,
CRect(10, 10, 100, 100), this, IDC_MYCHECKLISTBOX);
CCheckListBox::Create
Creates the Windows checklist box and attaches it to the CCheckListBox
object.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parameters
dwStyle
Specifies the style of the checklist box. The style must be LBS_HASSTRINGS
and either LBS_OWNERDRAWFIXED
(all items in the list are the same height) or LBS_OWNERDRAWVARIABLE
(items in the list are of varying heights). This style can be combined with other list-box styles except LBS_USETABSTOPS
.
rect
Specifies the checklist-box size and position. Can be either a CRect
object or a RECT
structure.
pParentWnd
Specifies the checklist box's parent window (usually a CDialog
object). It must not be NULL.
nID
Specifies the checklist box's control ID.
Return Value
Nonzero if successful; otherwise 0.
Remarks
You construct a CCheckListBox
object in two steps. First, define a class derived from CcheckListBox
and then call Create
, which initializes the Windows checklist box and attaches it to the CCheckListBox
. See CCheckListBox::CCheckListBox
for a sample.
When Create
executes, Windows sends the WM_NCCREATE
, WM_CREATE
, WM_NCCALCSIZE
, and WM_GETMINMAXINFO
messages to the checklist-box control.
These messages are handled by default by the OnNcCreate
, OnCreate
, OnNcCalcSize
, and OnGetMinMaxInfo
member functions in the CWnd
base class. To extend the default message handling, add a message map to the derived class and override the preceding message-handler member functions. Override OnCreate
, for example, to perform needed initialization for a new class.
Apply the following window styles to a checklist-box control:
WS_CHILD
AlwaysWS_VISIBLE
UsuallyWS_DISABLED
RarelyWS_VSCROLL
To add a vertical scroll barWS_HSCROLL
To add a horizontal scroll barWS_GROUP
To group controlsWS_TABSTOP
To allow tabbing to this control
CCheckListBox::DrawItem
Called by the framework when a visual aspect of an owner-drawn checklist box changes.
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
Parameters
lpDrawItemStruct
A long pointer to a DRAWITEMSTRUCT
structure that contains information about the type of drawing required.
Remarks
The itemAction
and itemState
members of the DRAWITEMSTRUCT
structure define the drawing action that is to be performed.
By default, this function draws a default checkbox list, consisting of a list of strings each with a default-sized checkbox to the left. The checkbox list size is the one specified in Create
.
Override this member function to implement drawing of owner-draw checklist boxes that aren't the default, such as checklist boxes with lists that aren't strings, with variable-height items, or with checkboxes that aren't on the left. The application should restore all graphics device interface (GDI) objects selected for the display context supplied in lpDrawItemStruct
before the termination of this member function.
If checklist box items aren't all the same height, the checklist box style (specified in Create
) must be LBS_OWNERVARIABLE
, and you must override the MeasureItem
function.
CCheckListBox::Enable
Call this function to enable or disable a checklist box item.
void Enable(
int nIndex,
BOOL bEnabled = TRUE);
Parameters
nIndex
Index of the checklist box item to be enabled.
bEnabled
Specifies whether the item is enabled or disabled.
CCheckListBox::GetCheck
Retrieves the state of the specified check box.
int GetCheck(int nIndex);
Parameters
nIndex
Zero-based index of a check box that is contained in the list box.
Return Value
The state of the specified check box. The following table lists possible values.
Value | Description |
---|---|
BST_CHECKED |
The check box is checked. |
BST_UNCHECKED |
The check box isn't checked. |
BST_INDETERMINATE |
The check box state is indeterminate. |
CCheckListBox::GetCheckStyle
Call this function to get the checklist box's style.
UINT GetCheckStyle();
Return Value
The style of the control's check boxes.
Remarks
For information on possible styles, see SetCheckStyle
.
CCheckListBox::IsEnabled
Call this function to determine whether an item is enabled.
BOOL IsEnabled(int nIndex);
Parameters
nIndex
Index of the item.
Return Value
Nonzero if the item is enabled; otherwise 0.
CCheckListBox::MeasureItem
Called by the framework when a checklist box with a nondefault style is created.
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMeasureItemStruct);
Parameters
lpMeasureItemStruct
A long pointer to a MEASUREITEMSTRUCT
structure.
Remarks
By default, this member function does nothing. Override this member function and fill in the MEASUREITEMSTRUCT
structure to inform Windows of the dimensions of checklist-box items. If the checklist box is created with the LBS_OWNERDRAWVARIABLE
style, the framework calls this member function for each item in the list box. Otherwise, this member is called only once.
CCheckListBox::OnGetCheckPosition
The framework calls this function to get the position and size of the check box in an item.
virtual CRect OnGetCheckPosition(
CRect rectItem,
CRect rectCheckBox);
Parameters
rectItem
The position and size of the list item.
rectCheckBox
The default position and size of an item's check box.
Return Value
The position and size of an item's check box.
Remarks
The default implementation only returns the default position and size of the check box (rectCheckBox
). By default, a check box is aligned in the upper-left corner of an item and is the standard check box size. There may be cases where you want the check boxes on the right, or want a larger or smaller check box. In these cases, override OnGetCheckPosition
to change the check box position and size within the item.
CCheckListBox::SetCheck
Sets the state of the specified check box.
void SetCheck(
int nIndex,
int nCheck);
Parameters
nIndex
Zero-based index of a check box that is contained in the list box.
nCheck
The button state for the specified check box. See the Remarks section for possible values.
Remarks
The following table lists possible values for the nCheck
parameter.
Value | Description |
---|---|
BST_CHECKED |
Select the specified check box. |
BST_UNCHECKED |
Clear the specified check box. |
BST_INDETERMINATE |
Set the specified check box state to indeterminate. This state is only available if the check box style is BS_AUTO3STATE or BS_3STATE . For more information, see Button Styles. |
CCheckListBox::SetCheckStyle
Call this function to set the style of check boxes in the checklist box.
void SetCheckStyle(UINT nStyle);
Parameters
nStyle
Determines the style of check boxes in the checklist box.
Remarks
Valid styles are:
BS_CHECKBOX
BS_AUTOCHECKBOX
BS_AUTO3STATE
BS_3STATE
For information on these styles, see Button Styles.