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: spinctrl.h 34903 2005-07-21 17:18:43Z ABX $ 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" 17class WXDLLEXPORT wxSpinCtrl; 18WX_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 26class WXDLLEXPORT wxSpinCtrl : public wxSpinButton 27{ 28public: 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 = _T("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 = _T("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 99protected: 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 123private: 124 DECLARE_DYNAMIC_CLASS(wxSpinCtrl) 125 DECLARE_EVENT_TABLE() 126}; // end of CLASS wxSpinCtrl 127 128#endif // _WX_MSW_SPINCTRL_H_ 129