+// ----------------------------------------------------------------------------
+// the wxSpinButton event
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_CORE wxSpinEvent : public wxNotifyEvent
+{
+public:
+ wxSpinEvent(wxEventType commandType = wxEVT_NULL, int winid = 0)
+ : wxNotifyEvent(commandType, winid)
+ {
+ }
+
+ wxSpinEvent(const wxSpinEvent& event) : wxNotifyEvent(event) {}
+
+ // get the current value of the control
+ int GetValue() const { return m_commandInt; }
+ void SetValue(int value) { m_commandInt = value; }
+
+ int GetPosition() const { return m_commandInt; }
+ void SetPosition(int pos) { m_commandInt = pos; }
+
+ virtual wxEvent *Clone() const { return new wxSpinEvent(*this); }
+
+private:
+ DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxSpinEvent)
+};
+
+typedef void (wxEvtHandler::*wxSpinEventFunction)(wxSpinEvent&);
+
+#define wxSpinEventHandler(func) \
+ wxEVENT_HANDLER_CAST(wxSpinEventFunction, func)
+
+// macros for handling spin events: notice that we must use the real values of
+// the event type constants and not their references (wxEVT_SPIN[_UP/DOWN])
+// here as otherwise the event tables could end up with non-initialized
+// (because of undefined initialization order of the globals defined in
+// different translation units) references in them
+#define EVT_SPIN_UP(winid, func) \
+ wx__DECLARE_EVT1(wxEVT_SPIN_UP, winid, wxSpinEventHandler(func))
+#define EVT_SPIN_DOWN(winid, func) \
+ wx__DECLARE_EVT1(wxEVT_SPIN_DOWN, winid, wxSpinEventHandler(func))
+#define EVT_SPIN(winid, func) \
+ wx__DECLARE_EVT1(wxEVT_SPIN, winid, wxSpinEventHandler(func))
+
+#endif // wxUSE_SPINBTN
+