]> git.saurik.com Git - wxWidgets.git/blob - include/wx/os2/spinctrl.h
Fixed #12566 (assert on deletion) due to inconsistent commit
[wxWidgets.git] / include / wx / os2 / spinctrl.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: msw/spinctrl.h
3 // Purpose: wxSpinCtrl class declaration for Win32
4 // Author: David Webster
5 // Modified by:
6 // Created: 10/15/99
7 // RCS-ID: $Id$
8 // Copyright: (c) David Webster
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_MSW_SPINCTRL_H_
13 #define _WX_MSW_SPINCTRL_H_
14
15 #include "wx/spinbutt.h" // the base class
16 #include "wx/dynarray.h"
17 class WXDLLIMPEXP_FWD_CORE wxSpinCtrl;
18 WX_DEFINE_EXPORTED_ARRAY_PTR(wxSpinCtrl *, wxArraySpins);
19
20 // ----------------------------------------------------------------------------
21 // Under Win32 and OS2 PM, wxSpinCtrl is a wxSpinButton with a buddy
22 // text window whose contents is automatically updated when the spin
23 // control is clicked.
24 // ----------------------------------------------------------------------------
25
26 class WXDLLIMPEXP_CORE wxSpinCtrl : public wxSpinButton
27 {
28 public:
29 wxSpinCtrl() { }
30 wxSpinCtrl( wxWindow* pParent
31 ,wxWindowID vId = wxID_ANY
32 ,const wxString& rsValue = wxEmptyString
33 ,const wxPoint& rPos = wxDefaultPosition
34 ,const wxSize& rSize = wxDefaultSize
35 ,long lStyle = wxSP_ARROW_KEYS
36 ,int nMin = 0
37 ,int nMax = 100
38 ,int nInitial = 0
39 ,const wxString& rsName = wxT("wxSpinCtrl")
40 )
41 {
42 Create(pParent, vId, rsValue, rPos, rSize, lStyle, nMin, nMax, nInitial, rsName);
43 }
44 virtual ~wxSpinCtrl();
45
46 bool Create(wxWindow* pParent
47 ,wxWindowID vId = wxID_ANY
48 ,const wxString& rsValue = wxEmptyString
49 ,const wxPoint& rPos = wxDefaultPosition
50 ,const wxSize& rSize = wxDefaultSize
51 ,long lStyle = wxSP_ARROW_KEYS
52 ,int nMin = 0
53 ,int nMax = 100
54 ,int nInitial = 0
55 ,const wxString& rsName = wxT("wxSpinCtrl")
56 );
57
58 //
59 // A wxTextCtrl-like method (but we can't have GetValue returning wxString
60 // because the base class already has one returning int!)
61 //
62 void SetValue(const wxString& rsText);
63
64 //
65 // implementation only from now on
66 // -------------------------------
67 //
68 virtual bool Enable(bool bEnable = true);
69
70 virtual int GetValue(void) const;
71
72 virtual bool SetFont(const wxFont &rFont);
73 virtual void SetFocus(void);
74
75 inline virtual void SetValue(int nVal) { wxSpinButton::SetValue(nVal); }
76
77 void SetSelection(long lFrom, long lTo);
78
79 virtual bool Show(bool bShow = true);
80
81 //
82 // wxSpinButton doesn't accept focus, but we do
83 //
84 inline virtual bool AcceptsFocus(void) const { return false; }
85
86 //
87 // Return the spinctrl object whose buddy is the given window or NULL
88 // Doesn't really do much under OS/2
89 //
90 static wxSpinCtrl* GetSpinForTextCtrl(WXHWND hWndBuddy);
91
92 //
93 // Process a WM_COMMAND generated by the buddy text control
94 //
95 bool ProcessTextCommand( WXWORD wCmd
96 ,WXWORD wId
97 );
98
99 protected:
100 virtual void DoGetPosition( int* nlX
101 ,int* nlY
102 ) const;
103 void DoMoveWindow( int nX
104 ,int nY
105 ,int nWidth
106 ,int nHeight
107 );
108 virtual wxSize DoGetBestSize(void) const;
109 virtual void DoGetSize( int* pnWidth
110 ,int* pnHeight
111 ) const;
112
113 //
114 // The handler for wxSpinButton events
115 //
116 void OnSpinChange(wxSpinEvent& rEvent);
117 void OnChar(wxKeyEvent& rEvent);
118 void OnSetFocus(wxFocusEvent& rEvent);
119
120 WXHWND m_hWndBuddy;
121 static wxArraySpins m_svAllSpins;
122
123 private:
124 DECLARE_DYNAMIC_CLASS(wxSpinCtrl)
125 DECLARE_EVENT_TABLE()
126 }; // end of CLASS wxSpinCtrl
127
128 #endif // _WX_MSW_SPINCTRL_H_