ScrollBarEx.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. #pragma once
  2. // Flags used for controlling the paint
  3. #define UISTATE_FOCUSED 0x00000001
  4. #define UISTATE_SELECTED 0x00000002
  5. #define UISTATE_DISABLED 0x00000004
  6. #define UISTATE_HOT 0x00000008
  7. #define UISTATE_PUSHED 0x00000010
  8. #define UISTATE_READONLY 0x00000020
  9. #define UISTATE_CAPTURED 0x00000040
  10. // 滚动块大小/滚动条长度 ≈ 页面大小/滚动条范围 ≈ 一屏显示的文档量/文档总量
  11. class CScrollBarEx : public ISkinControl
  12. {
  13. public:
  14. CScrollBarEx(void);
  15. ~CScrollBarEx(void);
  16. BOOL SetBgNormalPic(LPCTSTR lpszFileName);
  17. BOOL SetBgHotPic(LPCTSTR lpszFileName);
  18. BOOL SetBgPushedPic(LPCTSTR lpszFileName);
  19. BOOL SetBgDisabledPic(LPCTSTR lpszFileName);
  20. BOOL GetShowLeftUpBtn();
  21. void SetShowLeftUpBtn(BOOL bShow);
  22. BOOL SetLeftUpBtnNormalPic(LPCTSTR lpszFileName);
  23. BOOL SetLeftUpBtnHotPic(LPCTSTR lpszFileName);
  24. BOOL SetLeftUpBtnPushedPic(LPCTSTR lpszFileName);
  25. BOOL SetLeftUpBtnDisabledPic(LPCTSTR lpszFileName);
  26. BOOL GetShowRightDownBtn();
  27. void SetShowRightDownBtn(BOOL bShow);
  28. BOOL SetRightDownBtnNormalPic(LPCTSTR lpszFileName);
  29. BOOL SetRightDownBtnHotPic(LPCTSTR lpszFileName);
  30. BOOL SetRightDownBtnPushedPic(LPCTSTR lpszFileName);
  31. BOOL SetRightDownBtnDisabledPic(LPCTSTR lpszFileName);
  32. BOOL SetThumbNormalPic(LPCTSTR lpszFileName, RECT * lpNinePart = NULL);
  33. BOOL SetThumbHotPic(LPCTSTR lpszFileName, RECT * lpNinePart = NULL);
  34. BOOL SetThumbPushedPic(LPCTSTR lpszFileName, RECT * lpNinePart = NULL);
  35. BOOL SetThumbDisabledPic(LPCTSTR lpszFileName, RECT * lpNinePart = NULL);
  36. BOOL SetRailNormalPic(LPCTSTR lpszFileName);
  37. BOOL SetRailHotPic(LPCTSTR lpszFileName);
  38. BOOL SetRailPushedPic(LPCTSTR lpszFileName);
  39. BOOL SetRailDisabledPic(LPCTSTR lpszFileName);
  40. BOOL Create(HWND hOwnerWnd, UINT nCtrlId, RECT * lpRect,DWORD dwUseTimerId, BOOL bHorizontal = TRUE, BOOL bVisible = TRUE);
  41. BOOL Destroy();
  42. void SetOwnerWnd(HWND hWnd);
  43. HWND GetOwnerWnd();
  44. void SetCtrlId(UINT nCtrlId);
  45. UINT GetCtrlId();
  46. void SetRect(RECT * lpRect);
  47. void GetRect(RECT * lpRect);
  48. BOOL IsHorizontal();
  49. void SetHorizontal(BOOL bHorizontal = TRUE);
  50. BOOL IsVisible();
  51. void SetVisible(BOOL bVisible = TRUE);
  52. BOOL IsEnabled();
  53. void SetEnabled(BOOL bEnable = TRUE);
  54. int GetScrollRange();
  55. void SetScrollRange(int nRange);
  56. int GetScrollPos();
  57. void SetScrollPos(int nPos);
  58. int GetLineSize();
  59. void SetLineSize(int nSize);
  60. LRESULT WindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam);
  61. void OnPaint(CDC*pDC);
  62. void OnLButtonDown(UINT nFlags, CPoint point);
  63. void OnLButtonUp(UINT nFlags, CPoint point);
  64. void OnMouseMove(UINT nFlags, CPoint point);
  65. void OnMouseLeave();
  66. void OnTimer(UINT_PTR nIDEvent);
  67. private:
  68. void DrawBg(CDC*pDC);
  69. void DrawLeftUpBtn(CDC*pDC);
  70. void DrawRightDownBtn(CDC*pDC);
  71. void DrawThumb(CDC*pDC);
  72. void DrawRail(CDC*pDC);
  73. BOOL Invalidate(BOOL bErase = TRUE);
  74. void CalcScrollBarData();
  75. HWND SetCapture();
  76. BOOL ReleaseCapture();
  77. BOOL IsCaptured();
  78. BOOL StartTrackMouseLeave();
  79. BOOL IsMouseTracking();
  80. protected:
  81. HWND m_hOwnerWnd;
  82. UINT m_nCtrlId;
  83. CRect m_rcScrollBar;
  84. BOOL m_bHorizontal;
  85. BOOL m_bVisible;
  86. BOOL m_bEnabled;
  87. int m_nRange;
  88. int m_nScrollPos;
  89. int m_nLineSize;
  90. POINT m_ptLastMouse;
  91. int m_nLastScrollPos;
  92. int m_nLastScrollOffset;
  93. int m_nScrollRepeatDelay;
  94. DWORD m_dwUseTimerId, m_dwTimerId;
  95. BOOL m_bMouseHover;
  96. BOOL m_bCaptured;
  97. BOOL m_bMouseTracking;
  98. CImageEx * m_lpBgImgN;
  99. CImageEx * m_lpBgImgH;
  100. CImageEx * m_lpBgImgP;
  101. CImageEx * m_lpBgImgD;
  102. BOOL m_bShowLeftUpBtn;
  103. CRect m_rcLeftUpBtn;
  104. DWORD m_dwLeftUpBtnState;
  105. CImageEx * m_lpLeftUpBtnImgN;
  106. CImageEx * m_lpLeftUpBtnImgH;
  107. CImageEx * m_lpLeftUpBtnImgP;
  108. CImageEx * m_lpLeftUpBtnImgD;
  109. BOOL m_bShowRightDownBtn;
  110. CRect m_rcRightDownBtn;
  111. DWORD m_dwRightDownBtnState;
  112. CImageEx * m_lpRightDownBtnImgN;
  113. CImageEx * m_lpRightDownBtnImgH;
  114. CImageEx * m_lpRightDownBtnImgP;
  115. CImageEx * m_lpRightDownBtnImgD;
  116. CRect m_rcThumb;
  117. DWORD m_dwThumbState;
  118. CImageEx * m_lpThumbImgN;
  119. CImageEx * m_lpThumbImgH;
  120. CImageEx * m_lpThumbImgP;
  121. CImageEx * m_lpThumbImgD;
  122. CImageEx * m_lpRailImgN;
  123. CImageEx * m_lpRailImgH;
  124. CImageEx * m_lpRailImgP;
  125. CImageEx * m_lpRailImgD;
  126. };