Multi column Combo box (2)

CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

First, I want to say, that I saw the article
Multicolumn Combobox
by Jakawan Ratiwanich, on
www.codeguru.com
. I inspected the piece of code, and I noticed that exist a array
of items. That combo do not accept more than 200 items. In my mind, this is a
inconvenient issue. So, I started to create a class CMultiColumnComboBox. Dealing with
that very easy. The listbox of original combobox was replaced with a CListCtrl, so,
when you will click in button’s combo a lsitctrl will appear on the screen.

How user can use this control?

  1. Put in your resource dialog, a custom control, with window class name:
    MultiColumnComboBox.

  2. Add a new member in dialog class m_combo as CMultiColumnComboBox.
  3. In OnInitDialog subclass this member with
    m_combo.SubclassDlgItem(IDC_CUSTOM1, this),
    

    where IDC_CUSTOM1 is the ID of control in dialog.

How do you insert items?

Very easy. Here a snnipet code to insert:

    CListCtrl* pList = m_combo.GetListCtrl(); // call this function to retieve the listcontrol inside. 
    pList->InsertColumn(0, _T("Col 1"), LVCFMT_LEFT, 48);
    pList->InsertColumn(1, _T("Col 2"), LVCFMT_LEFT, 48);
    ...

As you see, filling control with items is in fact filling the list control.
Now the control is ready to use.

Notes:

– If the use want to add checkboxes to the lis control, he can call the following
function:

ListView_SetExtendedListViewStyle(m_combo.GetListCtrl()->m_hWnd,
                                  LVS_EX_FULLROWSELECT | LVS_EX_CHECKBOXES );

By default, the extended styles of listcontrol are : LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT.

If you need more help, free feel to ask me.

Download demo project – 31 KB

Download source – 6.6 KB

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read