| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: wx/msw/headerctrl.h
- // Purpose: wxMSW native wxHeaderCtrl
- // Author: Vadim Zeitlin
- // Created: 2008-12-01
- // Copyright: (c) 2008 Vadim Zeitlin <vadim@wxwidgets.org>
- // Licence: wxWindows licence
- ///////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_MSW_HEADERCTRL_H_
- #define _WX_MSW_HEADERCTRL_H_
- class WXDLLIMPEXP_FWD_CORE wxImageList;
- // ----------------------------------------------------------------------------
- // wxHeaderCtrl
- // ----------------------------------------------------------------------------
- class WXDLLIMPEXP_CORE wxHeaderCtrl : public wxHeaderCtrlBase
- {
- public:
- wxHeaderCtrl()
- {
- Init();
- }
- wxHeaderCtrl(wxWindow *parent,
- wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxHD_DEFAULT_STYLE,
- const wxString& name = wxHeaderCtrlNameStr)
- {
- Init();
- Create(parent, id, pos, size, style, name);
- }
- bool Create(wxWindow *parent,
- wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxHD_DEFAULT_STYLE,
- const wxString& name = wxHeaderCtrlNameStr);
- virtual ~wxHeaderCtrl();
-
- protected:
- // override wxWindow methods which must be implemented by a new control
- virtual wxSize DoGetBestSize() const;
- virtual void DoSetSize(int x, int y,
- int width, int height,
- int sizeFlags = wxSIZE_AUTO);
-
- private:
- // implement base class pure virtuals
- virtual void DoSetCount(unsigned int count);
- virtual unsigned int DoGetCount() const;
- virtual void DoUpdate(unsigned int idx);
- virtual void DoScrollHorz(int dx);
- virtual void DoSetColumnsOrder(const wxArrayInt& order);
- virtual wxArrayInt DoGetColumnsOrder() const;
- // override MSW-specific methods needed for new control
- virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
- virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
- // common part of all ctors
- void Init();
- // wrapper around Header_InsertItem(): insert the item using information
- // from the given column at the given index
- void DoInsertItem(const wxHeaderColumn& col, unsigned int idx);
- // get the number of currently visible items: this is also the total number
- // of items contained in the native control
- int GetShownColumnsCount() const;
- // due to the discrepancy for the hidden columns which we know about but
- // the native control does not, there can be a difference between the
- // column indices we use and the ones used by the native control; these
- // functions translate between them
- //
- // notice that MSWToNativeIdx() shouldn't be called for hidden columns and
- // MSWFromNativeIdx() always returns an index of a visible column
- int MSWToNativeIdx(int idx);
- int MSWFromNativeIdx(int item);
- // this is the same as above but for order, not index
- int MSWToNativeOrder(int order);
- int MSWFromNativeOrder(int order);
- // get the event type corresponding to a click or double click event
- // (depending on dblclk value) with the specified (using MSW convention)
- // mouse button
- wxEventType GetClickEventType(bool dblclk, int button);
- // the number of columns in the control, including the hidden ones (not
- // taken into account by the native control, see comment in DoGetCount())
- unsigned int m_numColumns;
- // this is a lookup table allowing us to check whether the column with the
- // given index is currently shown in the native control, in which case the
- // value of this array element with this index is 0, or hidden
- //
- // notice that this may be different from GetColumn(idx).IsHidden() and in
- // fact we need this array precisely because it will be different from it
- // in DoUpdate() when the column hidden flag gets toggled and we need it to
- // handle this transition correctly
- wxArrayInt m_isHidden;
- // the order of our columns: this array contains the index of the column
- // shown at the position n as the n-th element
- //
- // this is necessary only to handle the hidden columns: the native control
- // doesn't know about them and so we can't use Header_GetOrderArray()
- wxArrayInt m_colIndices;
- // the image list: initially NULL, created on demand
- wxImageList *m_imageList;
- // the offset of the window used to emulate scrolling it
- int m_scrollOffset;
- // actual column we are dragging or -1 if not dragging anything
- int m_colBeingDragged;
- wxDECLARE_NO_COPY_CLASS(wxHeaderCtrl);
- };
- #endif // _WX_MSW_HEADERCTRL_H_
|