00001 // wg_scrollbar.h 00002 // 00003 // CScrollBar interface 00004 // 00005 // 00006 // Copyright (c) 2002-2004 Rob Wiskow 00007 // rob-dev@boxedchaos.com 00008 // 00009 // This library is free software; you can redistribute it and/or 00010 // modify it under the terms of the GNU Lesser General Public 00011 // License as published by the Free Software Foundation; either 00012 // version 2.1 of the License, or (at your option) any later version. 00013 // 00014 // This library is distributed in the hope that it will be useful, 00015 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00017 // Lesser General Public License for more details. 00018 // 00019 // You should have received a copy of the GNU Lesser General Public 00020 // License along with this library; if not, write to the Free Software 00021 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00022 // 00023 00024 00025 #ifndef _WG_SCROLLBAR_H_ 00026 #define _WG_SCROLLBAR_H_ 00027 00028 #include "wg_range_control.h" 00029 #include "wg_painter.h" 00030 #include "wg_button.h" 00031 00032 00033 namespace wGui 00034 { 00035 00037 00038 class CScrollBar : public CRangeControl<int> 00039 { 00040 public: 00042 enum EScrollBarType 00043 { 00044 VERTICAL, 00045 HORIZONTAL 00046 }; 00047 00052 CScrollBar(const CRect& WindowRect, CWindow* pParent, EScrollBarType ScrollBarType); 00053 00055 virtual ~CScrollBar(void); 00056 00059 virtual void SetJumpAmount(int iJumpAmount) { m_iJumpAmount = iJumpAmount; } 00060 00063 virtual int GetJumpAmount(void) const { return m_iJumpAmount; } 00064 00065 00066 // CRangeControl overrides 00070 virtual void SetValue(int iValue, bool bRedraw = true); 00071 00072 00073 // CWindow overrides 00075 virtual void Draw(void) const; 00076 00079 virtual void SetWindowRect(const CRect& WindowRect); 00080 00083 virtual void MoveWindow(const CPoint& MoveDistance); 00084 00090 virtual bool OnMouseButtonDown(CPoint Point, unsigned int Button); 00091 00092 00093 // CMessageClient overrides 00096 virtual bool HandleMessage(CMessage* pMessage); 00097 00098 00099 protected: 00101 virtual void RepositionThumb(void); 00102 00103 EScrollBarType m_ScrollBarType; 00104 int m_iJumpAmount; 00105 CPictureButton* m_pBtnUpLeft; 00106 CPictureButton* m_pBtnDownRight; 00107 CRect m_ThumbRect; 00108 bool m_bDragging; 00109 00110 00111 private: 00112 void operator=(CScrollBar) { } 00113 }; 00114 00115 } 00116 00117 00118 #include "unit_tests/wg_scrollbar_unittests.h" 00119 00120 #endif // _WG_SCROLLBAR_H_ 00121