Owner-Drawn Combo Boxes
An application can create an owner-drawn
combo box to take responsibility for painting list items. The parent window
or dialog box of an owner-drawn combo box (its owner
) receives WM_DRAWITEM
messages when a portion of the combo box needs to be painted. An owner-drawn
combo box can list information other than, or in addition to, text strings.
Owner-drawn combo boxes can be of any type. However, the edit control in a simple
or drop-down combo box can only display text, while the owner paints the
selection field in a drop-down list box.
The owner of an owner-drawn combo box must process the WM_DRAWITEM message.
This message is sent whenever a portion of the combo box must be redrawn. The
owner may need to process other messages, depending on the styles specified for
the combo box.
An application can create an owner-drawn combo box by specifying the
CBS_OWNERDRAWFIXED or CBS_OWNERDRAWVARIABLE style. If all list items in the combo box
are the same height, such as strings or icons, an application can use the
CBS_OWNERDRAWFIXED style. If list items are of varying height, bitmaps of different
size, for example, an application can use the CBS_OWNERDRAWVARIABLE style.
The owner of an owner-drawn combo box can process a WM_MEASUREITEM
message to specify the dimensions of list items in the combo box. If the
application creates the combo box by using the CBS_OWNERDRAWFIXED style, Windows
sends the WM_MEASUREITEM message only once. The dimensions specified by the owner
are used for all list items. If the CBS_OWNERDRAWVARIABLE style is used,
Windows sends a WM_MEASUREITEM message for each list item added to the combo box.
The owner can determine or set the height of a list item at any time by using the CB_GETITEMHEIGHT
If the information displayed in an owner-drawn combo box includes text, an
application can keep track of the text for each list item by specifying the
CBS_HASSTRINGS style. Combo boxes with the CBS_SORT style are sorted based on this
text. If a combo box is sorted and not of the CBS_HASSTRINGS style, the owner
must process the WM_COMPAREITEM
In an owner-drawn combo box, the owner must keep track of list items
containing information other than or in addition to text. One convenient way to do this
is to save the handle of the information as item data. For more information
about item data, see Data Associated with List Items
. To free data objects associated with items in a combo box, the owner can
process the WM_DELETEITEM
For an example of an owner-drawn combo box, see Creating an Owner-Drawn Combo Box
- Software for developers
Software for Android Developers
- More information resources
Unix Manual Pages
- Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database