# wxOwnerDrawnComboBox Class Reference
[Controls]

`#include <wx/odcombo.h>`

Inheritance diagram for wxOwnerDrawnComboBox:
[legend]

## Detailed Description

wxOwnerDrawnComboBox is a combobox with owner-drawn list items.

In essence, it is a wxComboCtrl with wxVListBox popup and wxControlWithItems interface.

Implementing item drawing and measuring is similar to wxVListBox. Application needs to subclass wxOwnerDrawnComboBox and implement OnDrawItem(), OnMeasureItem() and OnMeasureItemWidth().

## Styles

This class supports the following styles:

- wxODCB_DCLICK_CYCLES:
  Double-clicking cycles item if wxCB_READONLY is also used. Synonymous with wxCC_SPECIAL_DCLICK.
- wxODCB_STD_CONTROL_PAINT:
  Control itself is not custom painted using OnDrawItem. Even if this style is not used, writable wxOwnerDrawnComboBox is never custom painted unless SetCustomPaintWidth() is called.

See also:
  wxComboCtrl window styles and Window Styles.

## Events emitted by this class

The following event handler macros redirect the events to member function handlers 'func' with prototypes like:

void handlerFuncName(wxCommandEvent& event)
Event macros for events emitted by this class:

- EVT_COMBOBOX(id, func):
  Process a wxEVT_COMMAND_COMBOBOX_SELECTED event, when an item on the list is selected. Note that calling GetValue() returns the new value of selection.

See also:
  Events emitted by wxComboCtrl.

##

Library: wxAdvanced

Category: Controls
Appearance:

wxMSW appearance | wxGTK appearance | wxMac appearance

See also:
  wxComboCtrl, wxComboBox, wxVListBox, wxCommandEvent

## Public Member Functions
| wxOwnerDrawnComboBox ()
| Default constructor.
| wxOwnerDrawnComboBox (wxWindow *parent, wxWindowID id, const wxString &value=wxEmptyString, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, int n=0, const wxString[] choices=NULL, long style=0, const wxValidator &validator=wxDefaultValidator, const wxString &name="comboBox")
| Constructor, creating and showing a owner-drawn combobox.
| wxOwnerDrawnComboBox (wxWindow *parent, wxWindowID id, const wxString &value, const wxPoint &pos, const wxSize &size, const wxArrayString &choices, long style=0, const wxValidator &validator=wxDefaultValidator, const wxString &name="comboBox")
| Constructor, creating and showing a owner-drawn combobox.
virtual | ~wxOwnerDrawnComboBox ()
| Destructor, destroying the owner-drawn combobox.
virtual int | GetWidestItem ()
| Returns index to the widest item in the list.
virtual int | GetWidestItemWidth ()
| Returns width of the widest item in the list.
bool | Create (wxWindow *parent, wxWindowID id, const wxString &value=wxEmptyString, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxValidator &validator=wxDefaultValidator, const wxString &name=wxComboBoxNameStr)
| Creates the combobox for two-step construction.
bool | Create (wxWindow *parent, wxWindowID id, const wxString &value, const wxPoint &pos, const wxSize &size, int n, const wxString choices[], long style=0, const wxValidator &validator=wxDefaultValidator, const wxString &name=wxComboBoxNameStr)
| Creates the combobox for two-step construction.
bool | Create (wxWindow *parent, wxWindowID id, const wxString &value, const wxPoint &pos, const wxSize &size, const wxArrayString &choices, long style=0, const wxValidator &validator=wxDefaultValidator, const wxString &name=wxComboBoxNameStr)
| Creates the combobox for two-step construction.
## Protected Member Functions
virtual void | OnDrawBackground (wxDC &dc, const wxRect &rect, int item, int flags) const
| This method is used to draw the items background and, maybe, a border around it.
virtual void | OnDrawItem (wxDC &dc, const wxRect &rect, int item, int flags) const
| The derived class may implement this function to actually draw the item with the given index on the provided DC.
virtual wxCoord | OnMeasureItem (size_t item) const
| The derived class may implement this method to return the height of the specified item (in pixels).
virtual wxCoord | OnMeasureItemWidth (size_t item) const
| The derived class may implement this method to return the width of the specified item (in pixels).

List of all members.

## Constructor & Destructor Documentation

wxOwnerDrawnComboBox::wxOwnerDrawnComboBox | ( |  | ) |

Default constructor.

wxOwnerDrawnComboBox::wxOwnerDrawnComboBox | ( | wxWindow * | parent,
|  | wxWindowID | id,
|  | const wxString & | value = `wxEmptyString`,
|  | const wxPoint & | pos = `wxDefaultPosition`,
|  | const wxSize & | size = `wxDefaultSize`,
|  | int | n = `0`,
|  | const wxString[] | choices = `NULL`,
|  | long | style = `0`,
|  | const wxValidator & | validator = `wxDefaultValidator`,
|  | const wxString & | name = `"comboBox"` |
| ) |  |  |

Constructor, creating and showing a owner-drawn combobox.

Parameters:

  | parent | Parent window. Must not be NULL.
  | id | Window identifier. The value `wxID_ANY` indicates a default value.
  | value | Initial selection string. An empty string indicates no selection.
  | pos | Window position.
  | size | Window size. If wxDefaultSize is specified then the window is sized appropriately.
  | n | Number of strings with which to initialise the control.
  | choices | An array of strings with which to initialise the control.
  | style | Window style. See wxOwnerDrawnComboBox.
  | validator | Window validator.
  | name | Window name.

See also:
  Create(), wxValidator

wxOwnerDrawnComboBox::wxOwnerDrawnComboBox | ( | wxWindow * | parent,
|  | wxWindowID | id,
|  | const wxString & | value,
|  | const wxPoint & | pos,
|  | const wxSize & | size,
|  | const wxArrayString & | choices,
|  | long | style = `0`,
|  | const wxValidator & | validator = `wxDefaultValidator`,
|  | const wxString & | name = `"comboBox"` |
| ) |  |  |

Constructor, creating and showing a owner-drawn combobox.

Parameters:

  | parent | Parent window. Must not be NULL.
  | id | Window identifier. The value `wxID_ANY` indicates a default value.
  | value | Initial selection string. An empty string indicates no selection.
  | pos | Window position.
  | size | Window size. If wxDefaultSize is specified then the window is sized appropriately.
  | choices | An array of strings with which to initialise the control.
  | style | Window style. See wxOwnerDrawnComboBox.
  | validator | Window validator.
  | name | Window name.

See also:
  Create(), wxValidator

virtual wxOwnerDrawnComboBox::~wxOwnerDrawnComboBox | ( |  | ) | `[virtual]`

Destructor, destroying the owner-drawn combobox.

## Member Function Documentation

bool wxOwnerDrawnComboBox::Create | ( | wxWindow * | parent,
|  | wxWindowID | id,
|  | const wxString & | value,
|  | const wxPoint & | pos,
|  | const wxSize & | size,
|  | const wxArrayString & | choices,
|  | long | style = `0`,
|  | const wxValidator & | validator = `wxDefaultValidator`,
|  | const wxString & | name = `wxComboBoxNameStr` |
| ) |  |  |

Creates the combobox for two-step construction.

See wxOwnerDrawnComboBox() for further details.

Remarks:
  Derived classes should call or replace this function.

bool wxOwnerDrawnComboBox::Create | ( | wxWindow * | parent,
|  | wxWindowID | id,
|  | const wxString & | value,
|  | const wxPoint & | pos,
|  | const wxSize & | size,
|  | int | n,
|  | const wxString | choices[],
|  | long | style = `0`,
|  | const wxValidator & | validator = `wxDefaultValidator`,
|  | const wxString & | name = `wxComboBoxNameStr` |
| ) |  |  |

Creates the combobox for two-step construction.

See wxOwnerDrawnComboBox() for further details.

Remarks:
  Derived classes should call or replace this function.

bool wxOwnerDrawnComboBox::Create | ( | wxWindow * | parent,
|  | wxWindowID | id,
|  | const wxString & | value = `wxEmptyString`,
|  | const wxPoint & | pos = `wxDefaultPosition`,
|  | const wxSize & | size = `wxDefaultSize`,
|  | long | style = `0`,
|  | const wxValidator & | validator = `wxDefaultValidator`,
|  | const wxString & | name = `wxComboBoxNameStr` |
| ) |  |  |

Creates the combobox for two-step construction.

See wxOwnerDrawnComboBox() for further details.

Remarks:
  Derived classes should call or replace this function.

Reimplemented from wxComboCtrl.

virtual int wxOwnerDrawnComboBox::GetWidestItem | ( |  | ) | `[virtual]`

Returns index to the widest item in the list.

virtual int wxOwnerDrawnComboBox::GetWidestItemWidth | ( |  | ) | `[virtual]`

Returns width of the widest item in the list.

virtual void wxOwnerDrawnComboBox::OnDrawBackground | ( | wxDC & | dc,
|  | const wxRect & | rect,
|  | int | item,
|  | int | flags |
| ) |  |  | const`[protected, virtual]`

This method is used to draw the items background and, maybe, a border around it.

The base class version implements a reasonable default behaviour which consists in drawing the selected item with the standard background colour and drawing a border around the item if it is either selected or current.

Remarks:
  flags has the same meaning as with OnDrawItem().

virtual void wxOwnerDrawnComboBox::OnDrawItem | ( | wxDC & | dc,
|  | const wxRect & | rect,
|  | int | item,
|  | int | flags |
| ) |  |  | const`[protected, virtual]`

The derived class may implement this function to actually draw the item with the given index on the provided DC.

If function is not implemented, the item text is simply drawn, as if the control was a normal combobox.

Parameters:

  | dc | The device context to use for drawing
  | rect | The bounding rectangle for the item being drawn (DC clipping region is set to this rectangle before calling this function)
  | item | The index of the item to be drawn
  | flags | A combination of the wxOwnerDrawnComboBoxPaintingFlags enumeration values.

virtual wxCoord wxOwnerDrawnComboBox::OnMeasureItem | ( | size_t | item | ) | const`[protected, virtual]`

The derived class may implement this method to return the height of the specified item (in pixels).

The default implementation returns text height, as if this control was a normal combobox.

virtual wxCoord wxOwnerDrawnComboBox::OnMeasureItemWidth | ( | size_t | item | ) | const`[protected, virtual]`

The derived class may implement this method to return the width of the specified item (in pixels).

If -1 is returned, then the item text width is used.

The default implementation returns -1.

|  | [ top ]