Files
Leviathan/Client/Game/engine/Ui/Controls/KUIControlSlider.h
T
2026-06-01 12:46:52 +02:00

72 lines
2.0 KiB
C++

#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();
};