1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/msw/bmpcbox.h 3 // Purpose: wxBitmapComboBox 4 // Author: Jaakko Salli 5 // Created: 2008-04-06 6 // Copyright: (c) 2008 Jaakko Salli 7 // Licence: wxWindows licence 8 ///////////////////////////////////////////////////////////////////////////// 9 10 #ifndef _WX_MSW_BMPCBOX_H_ 11 #define _WX_MSW_BMPCBOX_H_ 12 13 14 #include "wx/combobox.h" 15 16 17 // ---------------------------------------------------------------------------- 18 // wxBitmapComboBox: a wxComboBox that allows images to be shown 19 // in front of string items. 20 // ---------------------------------------------------------------------------- 21 22 class WXDLLIMPEXP_ADV wxBitmapComboBox : public wxComboBox, 23 public wxBitmapComboBoxBase 24 { 25 public: 26 // ctors and such wxBitmapComboBox()27 wxBitmapComboBox() : wxComboBox(), wxBitmapComboBoxBase() 28 { 29 Init(); 30 } 31 32 wxBitmapComboBox(wxWindow *parent, 33 wxWindowID id = wxID_ANY, 34 const wxString& value = wxEmptyString, 35 const wxPoint& pos = wxDefaultPosition, 36 const wxSize& size = wxDefaultSize, 37 int n = 0, 38 const wxString choices[] = NULL, 39 long style = 0, 40 const wxValidator& validator = wxDefaultValidator, 41 const wxString& name = wxBitmapComboBoxNameStr) wxComboBox()42 : wxComboBox(), 43 wxBitmapComboBoxBase() 44 { 45 Init(); 46 47 (void)Create(parent, id, value, pos, size, n, 48 choices, style, validator, name); 49 } 50 51 wxBitmapComboBox(wxWindow *parent, 52 wxWindowID id, 53 const wxString& value, 54 const wxPoint& pos, 55 const wxSize& size, 56 const wxArrayString& choices, 57 long style, 58 const wxValidator& validator = wxDefaultValidator, 59 const wxString& name = wxBitmapComboBoxNameStr); 60 61 bool Create(wxWindow *parent, 62 wxWindowID id, 63 const wxString& value, 64 const wxPoint& pos, 65 const wxSize& size, 66 int n, 67 const wxString choices[], 68 long style = 0, 69 const wxValidator& validator = wxDefaultValidator, 70 const wxString& name = wxBitmapComboBoxNameStr); 71 72 bool Create(wxWindow *parent, 73 wxWindowID id, 74 const wxString& value, 75 const wxPoint& pos, 76 const wxSize& size, 77 const wxArrayString& choices, 78 long style = 0, 79 const wxValidator& validator = wxDefaultValidator, 80 const wxString& name = wxBitmapComboBoxNameStr); 81 82 virtual ~wxBitmapComboBox(); 83 84 // Sets the image for the given item. 85 virtual void SetItemBitmap(unsigned int n, const wxBitmap& bitmap); 86 87 virtual bool SetFont(const wxFont& font); 88 89 // Adds item with image to the end of the combo box. 90 int Append(const wxString& item, const wxBitmap& bitmap = wxNullBitmap); 91 int Append(const wxString& item, const wxBitmap& bitmap, void *clientData); 92 int Append(const wxString& item, const wxBitmap& bitmap, wxClientData *clientData); 93 94 // Inserts item with image into the list before pos. Not valid for wxCB_SORT 95 // styles, use Append instead. 96 int Insert(const wxString& item, const wxBitmap& bitmap, unsigned int pos); 97 int Insert(const wxString& item, const wxBitmap& bitmap, 98 unsigned int pos, void *clientData); 99 int Insert(const wxString& item, const wxBitmap& bitmap, 100 unsigned int pos, wxClientData *clientData); 101 102 protected: 103 104 WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const; 105 virtual bool MSWOnDraw(WXDRAWITEMSTRUCT *item); 106 virtual bool MSWOnMeasure(WXMEASUREITEMSTRUCT *item); 107 108 // Event handlers 109 void OnSize(wxSizeEvent& event); 110 GetItemContainer()111 virtual wxItemContainer* GetItemContainer() { return this; } GetControl()112 virtual wxWindow* GetControl() { return this; } 113 114 // wxItemContainer implementation 115 virtual int DoInsertItems(const wxArrayStringsAdapter & items, 116 unsigned int pos, 117 void **clientData, wxClientDataType type); 118 virtual void DoClear(); 119 virtual void DoDeleteOneItem(unsigned int n); 120 121 virtual bool OnAddBitmap(const wxBitmap& bitmap); 122 virtual wxSize DoGetBestSize() const; 123 void RecreateControl(); 124 125 private: 126 void Init(); 127 128 bool m_inResize; 129 130 DECLARE_EVENT_TABLE() 131 132 DECLARE_DYNAMIC_CLASS(wxBitmapComboBox) 133 }; 134 135 #endif // _WX_MSW_BMPCBOX_H_ 136