coolscroll.h
上传用户:xhri001
上传日期:2022-07-04
资源大小:99k
文件大小:6k
源码类别:

界面编程

开发平台:

Visual C++

  1. #ifndef _COOLSBLIB_INCLUDED
  2. #define _COOLSBLIB_INCLUDED
  3. #ifdef __cplusplus
  4. extern "C"{
  5. #endif
  6. #include <windows.h>
  7. // To complement the exisiting SB_HORZ, SB_VERT, SB_BOTH
  8. // scrollbar identifiers
  9. #define COOLSB_NONE (-1)
  10. #define SB_INSBUT (-2)
  11. //
  12. // Arrow size defines
  13. //
  14. #define SYSTEM_METRIC (-1)
  15. //
  16. // general scrollbar styles
  17. //
  18. // use the standard ESB_DISABLE_xxx flags to represent the
  19. // enabled / disabled states. (defined in winuser.h)
  20. //
  21. #define CSBS_THUMBALWAYS 4
  22. #define CSBS_VISIBLE 8
  23. //cool scrollbar styles for Flat scrollbars
  24. #define CSBS_NORMAL 0
  25. #define CSBS_FLAT 1
  26. #define CSBS_HOTTRACKED 2
  27. //
  28. // Button mask flags for indicating which members of SCROLLBUT
  29. // to use during a button insertion / modification
  30. //
  31. #define SBBF_TYPE 0x0001
  32. #define SBBF_ID 0x0002
  33. #define SBBF_PLACEMENT 0x0004
  34. #define SBBF_SIZE 0x0008
  35. #define SBBF_BITMAP 0x0010
  36. #define SBBF_ENHMETAFILE 0x0020
  37. //#define SBBF_OWNERDRAW 0x0040 //unused at present
  38. #define SBBF_CURSOR 0x0080
  39. #define SBBF_BUTMINMAX 0x0100
  40. #define SBBF_STATE 0x0200
  41. //button styles (states)
  42. #define SBBS_NORMAL 0
  43. #define SBBS_PUSHED 1
  44. #define SBBS_CHECKED SBBS_PUSHED
  45. //
  46. // scrollbar button types
  47. //
  48. #define SBBT_PUSHBUTTON 1 //standard push button
  49. #define SBBT_TOGGLEBUTTON 2 //toggle button
  50. #define SBBT_FIXED 3 //fixed button (non-clickable)
  51. #define SBBT_FLAT 4 //blank area (flat, with border)
  52. #define SBBT_BLANK 5 //blank area (flat, no border)
  53. #define SBBT_DARK 6 //dark blank area (flat)
  54. #define SBBT_OWNERDRAW 7 //user draws the button via a WM_NOTIFY
  55. #define SBBT_MASK 0x1f //mask off low 5 bits
  56. //button type modifiers
  57. #define SBBM_RECESSED 0x0020 //recessed when clicked (like Word 97)
  58. #define SBBM_LEFTARROW 0x0040
  59. #define SBBM_RIGHTARROW 0x0080
  60. #define SBBM_UPARROW 0x0100
  61. #define SBBM_DOWNARROW 0x0200
  62. #define SBBM_RESIZABLE 0x0400
  63. #define SBBM_TYPE2 0x0800
  64. #define SBBM_TYPE3 0x1000
  65. #define SBBM_TOOLTIPS 0x2000 //currently unused (define COOLSB_TOOLTIPS in userdefs.h)
  66. //button placement flags
  67. #define SBBP_LEFT 1
  68. #define SBBP_RIGHT  2
  69. #define SBBP_TOP 1 //3
  70. #define SBBP_BOTTOM 2 //4
  71. //
  72. // Button command notification codes
  73. // for sending with a WM_COMMAND message
  74. //
  75. #define CSBN_BASE 0
  76. #define CSBN_CLICKED (1 + CSBN_BASE)
  77. #define CSBN_HILIGHT (2 + CSBN_BASE)
  78. //
  79. // Minimum size in pixels of a scrollbar thumb
  80. //
  81. #define MINTHUMBSIZE_NT4   8
  82. #define MINTHUMBSIZE_2000  6
  83. //define some more hittest values for our cool-scrollbar
  84. #define HTSCROLL_LEFT (SB_LINELEFT)
  85. #define HTSCROLL_RIGHT (SB_LINERIGHT)
  86. #define HTSCROLL_UP (SB_LINEUP)
  87. #define HTSCROLL_DOWN (SB_LINEDOWN)
  88. #define HTSCROLL_THUMB (SB_THUMBTRACK)
  89. #define HTSCROLL_PAGEGUP (SB_PAGEUP)
  90. #define HTSCROLL_PAGEGDOWN (SB_PAGEDOWN)
  91. #define HTSCROLL_PAGELEFT (SB_PAGELEFT)
  92. #define HTSCROLL_PAGERIGHT (SB_PAGERIGHT)
  93. #define HTSCROLL_NONE (-1)
  94. #define HTSCROLL_NORMAL (-1)
  95. #define HTSCROLL_INSERTED (128)
  96. #define HTSCROLL_PRE (32 | HTSCROLL_INSERTED)
  97. #define HTSCROLL_POST (64 | HTSCROLL_INSERTED)
  98. /*
  99. Public interface to the Cool Scrollbar library
  100. */
  101. BOOL WINAPI InitializeCoolSB(HWND hwnd);
  102. HRESULT WINAPI UninitializeCoolSB (HWND hwnd);
  103. BOOL WINAPI CoolSB_SetMinThumbSize(HWND hwnd, UINT wBar, UINT size);
  104. BOOL WINAPI CoolSB_IsThumbTracking(HWND hwnd);
  105. BOOL WINAPI CoolSB_IsCoolScrollEnabled(HWND hwnd);
  106. //
  107. BOOL WINAPI CoolSB_EnableScrollBar (HWND hwnd, int wSBflags, UINT wArrows);
  108. BOOL WINAPI CoolSB_GetScrollInfo (HWND hwnd, int fnBar, LPSCROLLINFO lpsi);
  109. int  WINAPI CoolSB_GetScrollPos (HWND hwnd, int nBar);
  110. BOOL WINAPI CoolSB_GetScrollRange (HWND hwnd, int nBar, LPINT lpMinPos, LPINT lpMaxPos);
  111. //
  112. int  WINAPI CoolSB_SetScrollInfo (HWND hwnd, int fnBar, LPSCROLLINFO lpsi, BOOL fRedraw);
  113. int  WINAPI CoolSB_SetScrollPos (HWND hwnd, int nBar, int nPos, BOOL fRedraw);
  114. int  WINAPI CoolSB_SetScrollRange (HWND hwnd, int nBar, int nMinPos, int nMaxPos, BOOL fRedraw);
  115. BOOL WINAPI CoolSB_ShowScrollBar (HWND hwnd, int wBar, BOOL fShow);
  116. //
  117. // Scrollbar dimension functions
  118. //
  119. BOOL WINAPI CoolSB_SetSize (HWND hwnd, int wBar, int nLength, int nWidth);
  120. //
  121. // Set the visual nature of a scrollbar (flat, normal etc)
  122. //
  123. BOOL WINAPI CoolSB_SetStyle (HWND hwnd, int wBar, UINT nStyle);
  124. BOOL WINAPI CoolSB_SetThumbAlways (HWND hwnd, int wBar, BOOL fThumbAlways);
  125. //
  126. // Scrollbar button structure, for inserted buttons only
  127. //
  128. typedef struct 
  129. {
  130. UINT fMask; //which members are in use
  131. UINT uPlacement; //is this button to the left/right (above/below) of the scrollbar??
  132. UINT uCmdId; //command identifier (WM_COMMAND value to send)
  133. UINT uButType; //
  134. UINT uState; //toggled etc
  135. int nSize; //size in pixels. -1 for autosize
  136. HBITMAP hBmp; //handle to a bitmap to use as the button face
  137. HENHMETAFILE hEmf; //handle to an enhanced metafile
  138. HCURSOR hCurs; //handle to a user-supplied mouse cursor to apply
  139. //to this button
  140. int nSizeReserved; //internal variable used for resizing
  141. int nMinSize; //min size
  142. int nMaxSize; //max size
  143. } SCROLLBUT;
  144. BOOL WINAPI CoolSB_InsertButton(HWND hwnd, int wSBflags, UINT nPos,  SCROLLBUT *psb);
  145. BOOL WINAPI CoolSB_ModifyButton(HWND hwnd, int wSBflags, UINT uItem, BOOL fByCmd, SCROLLBUT *psb);
  146. BOOL WINAPI CoolSB_RemoveButton(HWND hwnd, int wSBflags, UINT uItem, BOOL fByCmd);
  147. BOOL WINAPI CoolSB_GetButton   (HWND hwnd, int wSBflags, UINT uItem, BOOL fByCmd, SCROLLBUT *psb);
  148. void WINAPI CoolSB_SetESBProc(void *proc);
  149. typedef struct
  150. {
  151. NMHDR hdr;
  152. DWORD   dwDrawStage;
  153. HDC hdc;
  154. RECT rect;
  155. UINT uItem;
  156. UINT uState;
  157. UINT nBar;
  158. } NMCSBCUSTOMDRAW;
  159. typedef struct
  160. {
  161. NMHDR hdr;
  162. RECT rect;
  163. POINT pt;
  164. UINT uCmdId;
  165. UINT uState;
  166. int nBar;
  167. } NMCOOLBUTMSG;
  168. /*
  169. typedef struct
  170. {
  171. NMHDR hdr;
  172. DWORD   dwDrawStage;
  173. HDC hdc;
  174. RECT rect;
  175. UINT uCmdId;
  176. UINT uState;
  177. } NMCOOLBUTTON_CUSTOMDRAW;
  178. */
  179. //
  180. // Define the WM_NOTIFY code value for cool-scrollbar custom drawing
  181. //
  182. #define NM_COOLSB_CUSTOMDRAW (0-0xfffU)
  183. #ifdef __cplusplus
  184. }
  185. #endif
  186. #endif