//--------------------------------------------------------------------------- #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