native wxBitmapComboBox implementation for MSW (patch 1941399)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53626 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2008-05-17 22:43:00 +00:00
parent 6656b71108
commit f696015cf1
18 changed files with 1220 additions and 222 deletions

View File

@@ -98,21 +98,9 @@ public:
int Insert(const wxString& item, const wxBitmap& bitmap,
unsigned int pos, wxClientData *clientData);
// Returns size of image used in list.
virtual wxSize GetBitmapSize() const
{
return m_usedImgSize;
}
// Returns the image of the item with the given index.
virtual wxBitmap GetItemBitmap(unsigned int n) const;
// Sets the image for the given item.
virtual void SetItemBitmap(unsigned int n, const wxBitmap& bitmap);
virtual void DoClear();
virtual void DoDeleteOneItem(unsigned int n);
protected:
virtual void OnDrawBackground(wxDC& dc, const wxRect& rect, int item, int flags) const;
@@ -120,38 +108,26 @@ protected:
virtual wxCoord OnMeasureItem(size_t item) const;
virtual wxCoord OnMeasureItemWidth(size_t item) const;
virtual int DoInsertItems(const wxArrayStringsAdapter & items,
unsigned int pos,
void **clientData, wxClientDataType type);
virtual bool SetFont(const wxFont& font);
virtual wxSize DoGetBestSize() const;
// Event handlers
void OnSize(wxSizeEvent& event);
// Recalculates amount of empty space needed in front of
// text in control itself.
void DetermineIndent();
virtual wxSize DoGetBestSize() const;
virtual bool SetFont(const wxFont& font);
bool OnAddBitmap(const wxBitmap& bitmap);
virtual wxItemContainer* GetItemContainer() { return this; }
virtual wxWindow* GetControl() { return this; }
// Adds image to position - called in Append/Insert before
// string is added.
bool DoInsertBitmap(const wxBitmap& image, unsigned int pos);
wxArrayPtrVoid m_bitmaps; // Images associated with items
wxSize m_usedImgSize; // Size of bitmaps
// wxItemContainer implementation
virtual int DoInsertItems(const wxArrayStringsAdapter & items,
unsigned int pos,
void **clientData, wxClientDataType type);
virtual void DoClear();
virtual void DoDeleteOneItem(unsigned int n);
private:
int m_imgAreaWidth; // Width and height of area next to text field
int m_fontHeight;
bool m_inResize;
void Init();
void PostCreate();
DECLARE_EVENT_TABLE()