internal.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. #pragma once
  2. /////////////////////////////////////////////////////////////////
  3. //
  4. // Header file : SkinUI.h
  5. //
  6. // Descrption : Skin scrollbar library Version 1.0
  7. //
  8. /////////////////////////////////////////////////////////////////
  9. #ifdef __cplusplus
  10. extern "C"{
  11. #endif
  12. #include <windows.h>
  13. #include <windowsx.h>
  14. #include <commctrl.h>
  15. // Min thumb size
  16. #define SB_MINTHUMB_SIZE 10
  17. // The scroll timer ID
  18. #define SB_TIMER_DELAY 65533
  19. #define SB_TIMER_SCROLL 65534
  20. // Startup scroll timer delay
  21. #define SB_SCROLL_DELAY 300
  22. #define SB_SCROLL_INTERVAL 40
  23. // Hittest code
  24. #define HTSCROLL_NONE 0x00000000L
  25. #define HTSCROLL_LINEUP 0x00000001L
  26. #define HTSCROLL_LINEDOWN 0x00000002L
  27. #define HTSCROLL_THUMB 0x00000003L
  28. #define HTSCROLL_PAGEUP 0x00000004L
  29. #define HTSCROLL_PAGEDOWN 0x00000005L
  30. #define HTSCROLL_SIZEBOX 0x00000006L
  31. // status...
  32. #define SB_STATE_DEFAULT 0x00000000L
  33. #define SB_STATE_NORMAL 0x00000001L
  34. #define SB_STATE_HOTTRACKED 0x00000002L
  35. #define SB_STATE_PRESSED 0x00000003L
  36. #define SB_STATE_DISABLED 0x00000004L
  37. // Send scroll message
  38. #define DoScrollMsg(hwnd, cmd, pos, fvert) \
  39. SendMessage((hwnd), (fvert) ? WM_VSCROLL : WM_HSCROLL, MAKEWPARAM((cmd), (pos)), 0);
  40. // ScrollBar data sturcture
  41. typedef struct tagSB {
  42. HWND hwnd; // The window handle
  43. UINT flags; // Scrollbar disable flags
  44. DWORD style; // The window style
  45. SCROLLINFO Horz; // Horizontal scroll
  46. SCROLLINFO Vert; // Vertical scroll
  47. WNDPROC pfnOldProc; // The originally window procedure
  48. BOOL fLeftScrollBar; // Left scrollbar style
  49. BOOL fPreventStyleChange; // Prevent window style change
  50. BOOL fMouseTracking;
  51. BOOL fTracking; // Is tracking ?
  52. BOOL fTrackVert; // Tracking target whether vertical scrollbar
  53. BOOL fRichEdit; // Whether richedit control
  54. int nTrackCode; // Tracking hittest item code
  55. int nTrackPos; // Tracking thumb position
  56. int nOffsetPoint; // Tracking the thumb of mouse point offset
  57. UINT nScrollTimerMsg; // 32 bit value, low-word -> message, high-word -> scroll command
  58. UINT nLastCode; // Last HitTest code
  59. BOOL fLastVert; // Last HitTest is vertical scrollbar ?
  60. HBITMAP hBmp;
  61. } SB, *LPSB;
  62. // Scrollbar size calculate struct
  63. typedef struct tagSBCALC {
  64. int pxLeft;
  65. int pxTop;
  66. int pxRight;
  67. int pxBottom;
  68. union {
  69. int pxUpArrow;
  70. int pxLeftArrow;
  71. };
  72. union {
  73. int pxDownArrow;
  74. int pxRightArrow;
  75. };
  76. union {
  77. int pxThumbTop;
  78. int pxThumbLeft;
  79. };
  80. union {
  81. int pxThumbBottom;
  82. int pxThumbRight;
  83. };
  84. } SBCALC, *LPSBCALC;
  85. // Internal functions
  86. LPSB SkinUI_GetSB(HWND hwnd);
  87. BOOL SkinUI_SetSBParms(LPSCROLLINFO psi, SCROLLINFO si, BOOL* pfScroll, int* plres, BOOL bOldPos);
  88. BOOL SkinUI_IsScrollInfoActive(LPCSCROLLINFO lpsi);
  89. void SkinUI_SBCalc(LPSB psb, LPSBCALC lpcalc, BOOL fVert);
  90. BOOL SkinUI_GetSizeBoxRect(LPSB psb, LPRECT lprc);
  91. BOOL SkinUI_GetScrollBarRect(LPSB psb, BOOL fVert, LPRECT lprc);
  92. BOOL SkinUI_GetThumbRect(LPSB psb, LPRECT lprc, BOOL fVert);
  93. BOOL SkinUI_GetGrooveRect(LPSB psb, LPRECT lprc, BOOL fVert);
  94. //int SkinUI_GetPosFromPoint(POINT point, BOOL fVert);
  95. // Draw functions
  96. void SkinUI_DrawScrollBar(LPSB psb, HDC hDC, BOOL fVert);
  97. BOOL SkinUI_DrawGroove(LPSB psb, HDC hdc, LPRECT lprc, BOOL fVert);
  98. void SkinUI_DrawThumb(LPSB psb, HDC hdc, BOOL fVert);
  99. BOOL SkinUI_DrawArrow(LPSB psb, HDC hdc, BOOL fVert, int nArrow, UINT uState);
  100. BOOL SkinUI_DrawSizeBox(LPSB psb, HDC hDC);
  101. //BOOL SkinUI_DrawSkinBitmap(HDC hdc, LPRECT lprc, int xSrc, int ySrc, int nWidthSrc, int nHeightSrc,
  102. // BOOL bStretchAll, int leftMargin, int topMargin, int rightMargin, int bottomMargin,
  103. // BOOL bTrans, COLORREF clrTrans);
  104. //void SkinUI_TrackLoop(LPSB psb);
  105. void SkinUI_Track(LPSB psb, BOOL fVert, UINT nHit, POINT pt);
  106. BOOL SkinUI_TrackThumb(LPSB psb, BOOL fVert, POINT pt);
  107. BOOL SkinUI_HotTrack(LPSB psb, int nHitCode, BOOL fVert, BOOL fMouseDown);
  108. UINT SkinUI_HitTest(LPSB psb, BOOL fVert, POINT pt);
  109. BOOL SkinUI_EnableArrows(LPSB psb, int nBar, UINT wArrows);
  110. UINT SkinUI_GetDisableFlags(LPSB psb, BOOL fVert);
  111. UINT SkinUI_GetState(LPSB psb, BOOL fVert, UINT nHit);
  112. // Message functions
  113. LRESULT SkinUI_OnStyleChanged(LPSB psb, int nStyleType, LPSTYLESTRUCT lpStyleStruct);
  114. LRESULT SkinUI_OnNcHitTest(LPSB psb, WPARAM wParam, LPARAM lParam);
  115. LRESULT SkinUI_OnNcPaint(LPSB psb, HRGN hRgn);
  116. LRESULT SkinUI_OnNcCalcSize(LPSB psb, BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp);
  117. LRESULT SkinUI_OnNcMouseMove(LPSB psb, WPARAM wParam, LPARAM lParam);
  118. LRESULT SkinUI_OnNcLButtonDown(LPSB psb, WPARAM wParam, LPARAM lParam);
  119. LRESULT SkinUI_OnNcMouseLeave(LPSB psb, WPARAM wParam, LPARAM lParam);
  120. LRESULT SkinUI_OnMouseMove(LPSB psb, WPARAM wParam, LPARAM lParam);
  121. LRESULT SkinUI_OnLButtonUp(LPSB psb, WPARAM wParam, LPARAM lParam);
  122. LRESULT SkinUI_OnTimer(LPSB psb, WPARAM wParam, LPARAM lParam);
  123. // scroll window procedure
  124. LRESULT CALLBACK SkinUI_Proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
  125. #ifdef __cplusplus
  126. }
  127. #endif
  128. /*==========================================================================*\
  129. ===¹ö¶¯ÌõÄ£ÐÍÃèÊö===
  130. +-------------------------------+---+ <-------+
  131. | | A | (1)
  132. | +---+ <-------+----------+
  133. | | | |
  134. | | | |
  135. | |---| <-------+ |
  136. | | | | |
  137. | (10) | - | (2) |
  138. | | - | | |
  139. | | | | (3)
  140. | |---| <-------+ |
  141. | | | |
  142. | | | |
  143. | +---+ <-------+ |
  144. | | V | (4) |
  145. +---+-----------------------+---+---+ <-------+----------+
  146. | < | [ || ] | > |///| (5)
  147. +---+-----------------------+---+---+ <-------+
  148. ^ ^ ^ ^ ^ ^
  149. | | | | | |
  150. | | | | | |
  151. (8) (7) (6)
  152. ÃèÊö:
  153. (1)
  154. (2)
  155. (3)
  156. (4)
  157. \*=========================================================================*/