8ee9d6182c
2. fixed assert failure in wxMSW::wxListBox 3. wxFileHistory automatically deletes non existinf files from menu 4. wxDropTarget coordinates are client (and not screen) under MSW too 5. wxConvertBitmapToDib and vice versa seem to work! 6. client data field if filled by wxListBox and wxChoice and it's also deleted (this just wasn't done before!) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@4153 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
142 lines
4.4 KiB
C++
142 lines
4.4 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/msw/listbox.h
|
|
// Purpose: wxListBox class
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 01/02/97
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_LISTBOX_H_
|
|
#define _WX_LISTBOX_H_
|
|
|
|
#ifdef __GNUG__
|
|
#pragma interface "listbox.h"
|
|
#endif
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// simple types
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#if wxUSE_OWNER_DRAWN
|
|
class WXDLLEXPORT wxOwnerDrawn;
|
|
|
|
// define the array of list box items
|
|
#include <wx/dynarray.h>
|
|
|
|
WX_DEFINE_EXPORTED_ARRAY(wxOwnerDrawn *, wxListBoxItemsArray);
|
|
#endif // wxUSE_OWNER_DRAWN
|
|
|
|
// forward decl for GetSelections()
|
|
class wxArrayInt;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// List box control
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class WXDLLEXPORT wxListBox : public wxListBoxBase
|
|
{
|
|
public:
|
|
// ctors and such
|
|
wxListBox();
|
|
wxListBox(wxWindow *parent, wxWindowID id,
|
|
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 = wxListBoxNameStr)
|
|
{
|
|
Create(parent, id, pos, size, n, choices, style, validator, name);
|
|
}
|
|
|
|
bool Create(wxWindow *parent, wxWindowID id,
|
|
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 = wxListBoxNameStr);
|
|
|
|
virtual ~wxListBox();
|
|
|
|
// implement base class pure virtuals
|
|
virtual void Clear();
|
|
virtual void Delete(int n);
|
|
|
|
virtual int GetCount() const;
|
|
virtual wxString GetString(int n) const;
|
|
virtual void SetString(int n, const wxString& s);
|
|
virtual int FindString(const wxString& s) const;
|
|
|
|
virtual bool IsSelected(int n) const;
|
|
virtual void SetSelection(int n, bool select = TRUE);
|
|
virtual int GetSelection() const;
|
|
virtual int GetSelections(wxArrayInt& aSelections) const;
|
|
|
|
virtual int DoAppend(const wxString& item);
|
|
virtual void DoInsertItems(const wxArrayString& items, int pos);
|
|
virtual void DoSetItems(const wxArrayString& items, void **clientData);
|
|
|
|
virtual void DoSetFirstItem(int n);
|
|
|
|
virtual void DoSetItemClientData(int n, void* clientData);
|
|
virtual void* DoGetItemClientData(int n) const;
|
|
virtual void DoSetItemClientObject(int n, wxClientData* clientData);
|
|
virtual wxClientData* DoGetItemClientObject(int n) const;
|
|
|
|
// wxCheckListBox support
|
|
#if wxUSE_OWNER_DRAWN
|
|
bool MSWOnMeasure(WXMEASUREITEMSTRUCT *item);
|
|
bool MSWOnDraw(WXDRAWITEMSTRUCT *item);
|
|
|
|
// plug-in for derived classes
|
|
virtual wxOwnerDrawn *CreateItem(size_t n);
|
|
|
|
// allows to get the item and use SetXXX functions to set it's appearance
|
|
wxOwnerDrawn *GetItem(size_t n) const { return m_aItems[n]; }
|
|
|
|
// get the index of the given item
|
|
int GetItemIndex(wxOwnerDrawn *item) const { return m_aItems.Index(item); }
|
|
#endif // wxUSE_OWNER_DRAWN
|
|
|
|
// Windows-specific code to set the horizontal extent of the listbox, if
|
|
// necessary. If s is non-NULL, it's used to calculate the horizontal
|
|
// extent. Otherwise, all strings are used.
|
|
virtual void SetHorizontalExtent(const wxString& s = wxEmptyString);
|
|
|
|
// Windows callbacks
|
|
virtual WXHBRUSH OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
|
|
WXUINT message,
|
|
WXWPARAM wParam, WXLPARAM lParam);
|
|
|
|
bool MSWCommand(WXUINT param, WXWORD id);
|
|
|
|
virtual void SetupColours();
|
|
|
|
protected:
|
|
// do we have multiple selections?
|
|
bool HasMultipleSelection() const;
|
|
|
|
// free memory (common part of Clear() and dtor)
|
|
void Free();
|
|
|
|
int m_noItems;
|
|
int m_selected;
|
|
|
|
virtual wxSize DoGetBestSize();
|
|
|
|
#if wxUSE_OWNER_DRAWN
|
|
// control items
|
|
wxListBoxItemsArray m_aItems;
|
|
#endif
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS(wxListBox)
|
|
};
|
|
|
|
#endif
|
|
// _WX_LISTBOX_H_
|