Click here to Skip to main content
Click here to Skip to main content

BitmapPickerComboEx - A Nice Looking Combo Box with Sections

, 22 Jan 2009 CPOL
Rate this:
Please Sign up or sign in to vote.
Control to create a Combobox dropdown with icons and sections headers

Introduction 

This ComboBox style control features a nice drop down list with icons and headlines. It's useful if you have a ComboBox with a limited, pre-defined list of choices that can be grouped into sections. Typical uses are project types, document types, etc.

Screenshots

Screenshots: Sample usages for BitmapPickerComboEx, taken from my file sync software.

Basic Usage

You'll find three elements in the ComboBox:

  • Headlines (Bold, without icons)
  • Items (with Icons)
  • Blanks links

Setting It Up

The Control

The ComboBox control is set up with the usual steps for custom control:

  1. In the resource editor: Create a ComboBox in your dialog.
  2. Use the OwnerdrawnVariable and HasStrings options in the ComboBox properties
  3. In your *.h file: Add this line "CBitmapPickerCombo m_Combox;"
  4. In your *.cpp file: Add this line "DDX_Control(pDX, IDC_COMBO1, m_Combox);" in DoDataExchange. (The number in IDC_COMBO1 may differ. Check the ComboBox properties.)
  5. Add the files BitmapPickerCombo.cpp and BitmapKeyed.cpp to your project.

The Bitmaps

The control needs bitmaps if you want to display them in the ComboBox. For each image:

  1. In the resource editor: Create a Bitmap with black background and a key bitmap (of the same object) with white background and black pixels instead of colors.
  2. In your *.h file: Add this line "CBitmapKeyed bitmap" (With a different name each time, of course)
  3. Initialize each bitmap with "bitmap.Init (this, NULL, IDB_YOURIMAGE, IDB_YOURIMAGEKEY);"

Filling It With Data 

Create a Headline

m_Combox.AddBitmap (NULL, "Headline");

Create an Item

m_Combox.AddBitmap (&bitmap, "Item");

(See above for "bitmap".)

Create a Blank Line

m_Combox.AddBitmap (NULL, "");

Handling Invalid Selections

Please note that any of the above line types can be selected by the user. I experimented with making headlines and blank lines non-selectable but that made the selected with cursor keys impossible. I'd recommend to check for an invalid selected (like a blank line) and disable the "OK" button in your dialog in such a case.

Acknowledgements

The code is heavily based on Anneke Sicherer-Roetman's BitmapPickerCombo (also available on The Code Project). I only made some modifications to make it look nicer, so I can claim only a small part of the credit. Thanks Anneke.

History

  • 22nd January, 2009: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

ITSTH

Germany Germany
No Biography provided

Comments and Discussions

 
QuestionDelete item Pinmemberblueh16-Mar-14 17:52 
AnswerRe: Delete item PinmemberITSTH16-Mar-14 23:28 
GeneralMy vote of 2 PinmemberGrump27-Jan-09 7:34 
GeneralSuggestions PinmvpHans Dietrich23-Jan-09 1:39 
AnswerRe: Suggestions PinmemberITSTH23-Jan-09 2:42 
GeneralRe: Suggestions PinmvpHans Dietrich23-Jan-09 6:42 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.141216.1 | Last Updated 22 Jan 2009
Article Copyright 2009 by ITSTH
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid