#pragma once //#include "KUIControl.h" class KUIControlButton; class KUIControlSimpleButton; /** 슬라이어든 생성할시 무조건 자식인 KUIControlHSlider로 생성하며 사용시에는 KUIControlSlider으로 관리한다. 따라서 KUIControlSlider의 생성자는 protected이며 KUIControlSlider의 접근 함수는 모두 private이다. */ class KUIControlSlider : public KUIControl { protected: KUIControlSlider(void); virtual ~KUIControlSlider(void); public: void SetSliderRange(DWORD dwMaxRange); void SetPosition(int nPos); DWORD GetSliderRange() { return m_dwMaxRange; } int GetPosition() { return m_nCurrentPos; } protected: virtual void PumpUpMessage(LPCSTR lpszControlID, DWORD dwMessage, DWORD lParam, DWORD wParam); virtual DWORD OnKeyMessage(DWORD dwMessage, DWORD dwKeyCode); virtual DWORD OnMouseMessage( DWORD dwMessage, int x, int y ); virtual void _initControl(); virtual void _CopyRangeStaticCtr() = 0; virtual int _GetOptionControlGap() = 0; virtual int _GetPos( int x, int y ) = 0; virtual void _BackGroundCtrUpdate(int nPos) = 0; virtual void _OffsetOptionCtrBt( int OffsetX, int OffsetY ) = 0; virtual bool _ButtonClickUpdate( const char* c_buttonID ) = 0; protected: enum { SLIDER_BAR_LEFT = 0, SLIDER_BAR_RIGHT = 1, TOTAL_BTN = 2, }; KUIControlButton* m_pOptionCtrBt; KUIControlSimpleButton* m_pSliderBarBtn[TOTAL_BTN]; bool m_bMouseDrag; int m_nCurrentPos; DWORD m_dwMaxRange; KPoint m_OldClickPoint; }; /// Horizontal Slider class KUIControlHSlider : public KUIControlSlider { public: KUIControlHSlider(void); virtual ~KUIControlHSlider(void); private: virtual void _initControl(); virtual void _CopyRangeStaticCtr(); virtual int _GetPos( int x, int y ); virtual void _OffsetOptionCtrBt( int OffsetX, int OffsetY ); virtual void _BackGroundCtrUpdate(int nPos); virtual bool _ButtonClickUpdate( const char* lpszControlID ); virtual int _GetOptionControlGap() { return (m_dwMaxRange <= 1) ? m_rcRegion.GetWidth() : m_rcRegion.GetWidth()/(m_dwMaxRange-1); } void RemoveCopyStaticCtr(); };