// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
+
+enum wxOwnerDrawnComboBoxPaintingFlags
+{
+ /**
+ Combo control is being painted, instead of a list item.
+ Argument item may be @c wxNOT_FOUND in this case.
+ */
+ wxODCB_PAINTING_CONTROL = 0x0001,
+
+ /**
+ An item with selection background is being painted.
+ DC text colour should already be correct.
+ */
+ wxODCB_PAINTING_SELECTED = 0x0002
+};
+
/**
@class wxOwnerDrawnComboBox
@wxheader{odcombo.h}
wxOwnerDrawnComboBox is a combobox with owner-drawn list items.
- In essence, it is a wxComboCtrl with
- wxVListBox popup and wxControlWithItems
+ 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
- wxOwnerDrawnComboBox::OnDrawItem, wxOwnerDrawnComboBox::OnMeasureItem
- and wxOwnerDrawnComboBox::OnMeasureItemWidth.
+ OnDrawItem(), OnMeasureItem() and OnMeasureItemWidth().
@beginStyleTable
- @style{wxODCB_DCLICK_CYCLES}:
+ @style{wxODCB_DCLICK_CYCLES}
Double-clicking cycles item if wxCB_READONLY is also used.
Synonymous with wxCC_SPECIAL_DCLICK.
- @style{wxODCB_STD_CONTROL_PAINT}:
+ @style{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.
+ painted unless SetCustomPaintWidth() is called.
@endStyleTable
+ @see wxComboCtrl window styles and @ref overview_windowstyles.
+
@beginEventTable{wxCommandEvent}
- @event{EVT_COMBOBOX(id, func)}:
+ @event{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
+ the list is selected. Note that calling GetValue() returns the new
value of selection.
@endEventTable
+ @see Events emitted by wxComboCtrl.
+
@library{wxadv}
@category{ctrl}
@appearance{ownerdrawncombobox.png}
class wxOwnerDrawnComboBox : public wxComboCtrl
{
public:
+ /**
+ Default constructor.
+ */
+ wxOwnerDrawnComboBox();
+
//@{
/**
Constructor, creating and showing a owner-drawn combobox.
@param parent
Parent window. Must not be @NULL.
@param id
- Window identifier. The value wxID_ANY indicates a default value.
+ Window identifier. The value @c wxID_ANY indicates a default value.
@param value
Initial selection string. An empty string indicates no selection.
@param pos
Window position.
@param size
- Window size. If wxDefaultSize is specified then the window is
- sized
- appropriately.
+ Window size.
+ If ::wxDefaultSize is specified then the window is sized appropriately.
@param n
Number of strings with which to initialise the control.
@param choices
@see Create(), wxValidator
*/
- wxOwnerDrawnComboBox();
wxOwnerDrawnComboBox(wxWindow* parent, wxWindowID id,
const wxString& value = "",
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
int n = 0,
- const wxString choices[] = NULL,
+ const wxString[] choices = NULL,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = "comboBox");
//@{
/**
- Creates the combobox for two-step construction. Derived classes
- should call or replace this function. See
- wxOwnerDrawnComboBox()
- for further details.
+ Creates the combobox for two-step construction.
+ See wxOwnerDrawnComboBox() for further details.
+
+ @remarks Derived classes should call or replace this function.
*/
bool Create(wxWindow* parent, wxWindowID id,
const wxString& value = "",
/**
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.
+ @remarks flags has the same meaning as with OnDrawItem().
*/
void OnDrawBackground(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. If function is not implemented,
- the item text is simply drawn, as if the control was a normal combobox.
+ 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.
@param dc
The device context to use for drawing
@param item
The index of the item to be drawn
@param flags
- Combines any of the following flag values:
+ A combination of the ::wxOwnerDrawnComboBoxPaintingFlags enumeration values.
*/
void OnDrawItem(wxDC& dc, const wxRect& rect, int item,
int flags) const;
/**
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.
*/
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.
*/
wxCoord OnMeasureItemWidth(size_t item) const;