Files
AC_Pro/SkinScrollBarUnit.h
2026-06-13 00:05:19 +08:00

97 lines
3.1 KiB
C++

//---------------------------------------------------------------------------
#ifndef SkinScrollBarUnitH
#define SkinScrollBarUnitH
#define TIME_DELAY 200
#define TIME_NOTIFY 100
#define THUMB_BORDER 7
#define THUMB_MINSIZE (THUMB_BORDER * 2)
#define STATE_NORMAL 0
#define STATE_HIGHLIGHT 1
#define STATE_PUSH 2
class TSkinScrollBar : public TScrollBar
{
private:
// int m_nTileHeight, //add by tj 2013/11/18
int m_nThumbSize,
m_nThumbPos,
m_nPreThumbPos,
m_nDragPos,
m_nDragPoint,
m_iClicked,
m_iHitPrev,
m_nMax,
m_nMin,
m_nPos,
m_nPage,
m_nTrackPos;
bool m_bPause,
m_bNotify,
m_bDrag,
m_bTrace,
m_bAction;
TTimer *m_pTimer;
TControlCanvas *m_pCanvas;
int HitTest( int X, int Y );
void CalcThumbSize();
void CalcThumbPos();
void DrawArrow( int iDirection, int iState );
void DrawThumb( int iState, bool bEraseBk, int iPageUD=-1 );
void DrawBound();
void __fastcall TimerProc(TObject* Sender);
MESSAGE void __fastcall WMPaint(Winapi::Messages::TWMPaint &Message);
MESSAGE void __fastcall WMLButtonDown(TWMMouse &Message);
MESSAGE void __fastcall WMLButtonUp(TWMMouse &Message);
MESSAGE void __fastcall WMLButtonDblClk(TWMMouse &Message);
// MESSAGE void __fastcall WMRButtonDown(TWMMouse &Message){}; //add by tj 2013/11/18
MESSAGE void __fastcall WMRButtonUp(TWMMouse &Message){}; //add by tj 2013/11/18
MESSAGE void __fastcall WMMouseMove(TWMMouse &Message);
// MESSAGE void __fastcall SBMSetScrollInfo(TMessage &Message);
// MESSAGE void __fastcall SBMGetScrollInfo(TMessage &Message);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(WM_PAINT, TWMPaint, WMPaint)
MESSAGE_HANDLER(WM_LBUTTONDOWN, TWMLButtonDown, WMLButtonDown)
MESSAGE_HANDLER(WM_LBUTTONUP, TWMLButtonUp, WMLButtonUp)
MESSAGE_HANDLER(WM_LBUTTONDBLCLK, TWMLButtonDblClk, WMLButtonDblClk)
// MESSAGE_HANDLER(WM_RBUTTONDOWN, TWMRButtonDown, WMRButtonDown)
MESSAGE_HANDLER(WM_RBUTTONUP, TWMRButtonUp, WMRButtonUp) //add by tj 2013/11/18
MESSAGE_HANDLER(WM_MOUSEMOVE, TWMMouseMove, WMMouseMove) //add by tj 2013/11/18
// MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, CMMouseLeave) //add by tj 2013/11/25 12:35
// MESSAGE_HANDLER(SBM_SETSCROLLINFO, TMessage, SBMSetScrollInfo)
// MESSAGE_HANDLER(SBM_GETSCROLLINFO, TMessage, SBMGetScrollInfo)
END_MESSAGE_MAP(TScrollBar)
protected:
virtual void __fastcall PaintWindow(HDC DC);
public:
TWinControl *m_pWndCtrl;
__fastcall virtual TSkinScrollBar(System::Classes::TComponent* AOwner, bool bVertical=true);//ȱʡ´¹Ö±
__fastcall ~TSkinScrollBar();
void __fastcall CMMouseEnter(TObject *Sender);
void __fastcall CMMouseLeave(TObject *Sender); //add by tj 2013/11/25 12:35
bool IsDraging(){ return m_bDrag; };
bool IsOperable(){ return m_nMax > m_nMin; };
void __fastcall SetPosition(int Value, bool bRedraw=true);
void __fastcall SetPageSize(int Value, bool bRedraw=true);
void __fastcall SetRange(int AMin, int AMax, bool bRedraw=true);
void __fastcall GetScrollRange(int* nMin, int* nMax);
int __fastcall GetScrollPos();
int __fastcall GetPageSize();
};
//---------------------------------------------------------------------------
#endif