![]() |
Desktop Development »
Combo & List Boxes »
ComboBox Controls
Intermediate
License: The Code Project Open License (CPOL)
CCheckComboBox IIBy PJ ArendsA ComboBox that has a checkbox by each of its items. |
VC6, VC7Win2K, WinXP, MFC, Dev
|
|
Advanced Search |
|
|
|
||||||||||||||||

This control is actually a modification of the CCheckComboBox class that was written by Magnus Egelberg, Lunalogik. Magnus' control had just about everything I was looking for in a CheckComboBox except one small feature. It did not allow you to check an item in the static text portion of the combo box, you had to drop down the list box in order to make the selections. All the drawing code in this class was written by Magnus. The only additions I made was the code to handle the check box in the static text area, and I removed the dependency on the item data for storing the check state of the items. It is now stored in a CByteArray member variable.
To use the control, you have to include the CheckComboBox.h header file and add the CheckComboBox.cpp file to your project.
If the control is used on a dialog, it has to have the CBS_DROPDOWNLIST and CBS_OWNERDRAWVARIABLE combo box styles.
In addition to the regular CBN_* notifications that are generated by the combobox, the CCheckComboBox will also generate a BN_CLICKED notification whenever a user changes the check state of a check box. You can handle the BN_CLICKED notification exactly the same way you would handle it if it was generated by a button control. Use the GetCurSel() member function to get the index of the checkbox that generated the BN_CLICKED notification.
BEGIN_MESSAGE_MAP(CCCheckCombo_demoDlg, CDialog)
// use the ON_BN_CLICKED macro to catch the BN_CLICKED
// command that is generated by the CCheckComboBox
ON_BN_CLICKED(IDC_COMBO1, OnCheckBox)
END_MESSAGE_MAP()
...
void CCCheckCombo_demoDlg::OnCheckBox()
{
int sel = m_CheckCombo.GetCurSel();
CString text;
m_CheckCombo.GetLBText(sel, text);
BOOL checked = m_CheckCombo.GetCheck(sel);
TRACE(_T("Item %d (\"%s\") was %s \n"), sel,
text, checked ? _T("checked") : _T("unchecked"));
}
These are the public member functions added to the CCheckComboBox. All CComboBox member functions can also be used.
BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID)
Use this function to dynamically create a CCheckComboBox control. The required combo box styles are set automatically.
Nonzero if successful, otherwise 0.
dwStyle |
The WS_* and CBS_* styles for the control. The CBS_DROPDOWNLIST and CBS_OWNERDRAWVARIABLE styles are set automatically if they are not specified. |
rect |
The position and size of the CCheckComboBox. |
pParentWnd |
Specifies the CCheckComboBox�s parent window (usually a CDialog). It must not be NULL. |
nID |
Specifies the CCheckComboBox�s control ID. |
BOOL GetCheck(int nIndex)
Use this function to get the checked state of the check box at the specified zero based index.
TRUE if the check box is checked, otherwise FALSE.
nIndex |
The zero based index of the check box |
BOOL SetCheck(int nIndex, BOOL bCheck = TRUE)
Sets the check state for the check box at the specified zero based index.
The previous check state. TRUE if the check box was checked, FALSE if not.
nIndex |
The zero based index of the check box |
bCheck |
The new check state. TRUE to check the check box, FALSE to uncheck it. |
void CheckAll(BOOL bCheck = TRUE)
Sets the checked state of all the check boxes in the CCheckComboBox control.
There is no return value.
bCheck |
The new check state. TRUE to check the check boxes, FALSE to uncheck them. |
| You must Sign In to use this message board. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 4 Jul 2004 Editor: Smitha Vijayan |
Copyright 2003 by PJ Arends Everything else Copyright © CodeProject, 1999-2009 Web20 | Advertise on the Code Project |