1/////////////////////////////////////////////////////////////////////////////
2// Name:        scrollbar.h
3// Purpose:     wxScrollBar class
4// Author:      Julian Smart
5// Modified by:
6// Created:     01/02/97
7// RCS-ID:      $Id: scrolbar.h 41020 2006-09-05 20:47:48Z VZ $
8// Copyright:   (c) Julian Smart
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_SCROLBAR_H_
13#define _WX_SCROLBAR_H_
14
15// Scrollbar item
16class WXDLLEXPORT wxScrollBar: public wxScrollBarBase
17{
18public:
19    wxScrollBar() { m_pageSize = 0; m_viewSize = 0; m_objectSize = 0; }
20    virtual ~wxScrollBar();
21
22    wxScrollBar(wxWindow *parent, wxWindowID id,
23            const wxPoint& pos = wxDefaultPosition,
24            const wxSize& size = wxDefaultSize,
25            long style = wxSB_HORIZONTAL,
26            const wxValidator& validator = wxDefaultValidator,
27            const wxString& name = wxScrollBarNameStr)
28    {
29        Create(parent, id, pos, size, style, validator, name);
30    }
31    bool Create(wxWindow *parent, wxWindowID id,
32            const wxPoint& pos = wxDefaultPosition,
33            const wxSize& size = wxDefaultSize,
34            long style = wxSB_HORIZONTAL,
35            const wxValidator& validator = wxDefaultValidator,
36            const wxString& name = wxScrollBarNameStr);
37
38    int GetThumbPosition() const ;
39    int GetThumbSize() const { return m_pageSize; }
40    int GetPageSize() const { return m_viewSize; }
41    int GetRange() const { return m_objectSize; }
42
43    virtual void SetThumbPosition(int viewStart);
44    virtual void SetScrollbar(int position, int thumbSize, int range, int pageSize,
45            bool refresh = true);
46
47    // needed for RTTI
48    void SetThumbSize( int s ) { SetScrollbar( GetThumbPosition() , s , GetRange() , GetPageSize() , true ) ; }
49    void SetPageSize( int s ) { SetScrollbar( GetThumbPosition() , GetThumbSize() , GetRange() , s , true ) ; }
50    void SetRange( int s ) { SetScrollbar( GetThumbPosition() , GetThumbSize() , s , GetPageSize() , true ) ; }
51
52    void Command(wxCommandEvent& event);
53    virtual bool MSWOnScroll(int orientation, WXWORD wParam,
54                             WXWORD pos, WXHWND control);
55
56    // override wxControl version to not use solid background here
57    virtual WXHBRUSH MSWControlColor(WXHDC pDC, WXHWND hWnd);
58
59    virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
60
61protected:
62    virtual wxSize DoGetBestSize() const;
63
64    int m_pageSize;
65    int m_viewSize;
66    int m_objectSize;
67
68    DECLARE_DYNAMIC_CLASS_NO_COPY(wxScrollBar)
69};
70
71#endif
72    // _WX_SCROLBAR_H_
73