Click here to Skip to main content
Licence CPOL
First Posted 22 Jan 2009
Views 16,892
Downloads 785
Bookmarked 30 times

BitmapPickerComboEx - A Nice Looking Combo Box with Sections

By | 22 Jan 2009 | Article
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)

About the Author

ITSTH



Germany Germany

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 2 PinmemberGrump6:34 27 Jan '09  
GeneralSuggestions PinmvpHans Dietrich0:39 23 Jan '09  
AnswerRe: Suggestions PinmemberITSTH1:42 23 Jan '09  
GeneralRe: Suggestions PinmvpHans Dietrich5:42 23 Jan '09  

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.

Permalink | Advertise | Privacy | Mobile
Web03 | 2.5.120517.1 | Last Updated 22 Jan 2009
Article Copyright 2009 by ITSTH
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid