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

界面编程

开发平台:

Visual C++

  1. #include <windows.h>
  2. #include "..coolsbcoolscroll.h"
  3. #include "resource.h"
  4. LRESULT CommandHandler(HWND hwnd, WPARAM wParam, LPARAM lParam);
  5. extern HWND hwndCtrl;
  6. #define VERT_GRIPPER 700
  7. #define GRIPPER 1
  8. #define BUT1 2
  9. #define BUT2 3
  10. HDC hdcSkin;
  11. HBITMAP hSkinBmp;
  12. BOOL fCustomDraw  = FALSE;
  13. BOOL fButtons     = FALSE;
  14. BOOL fThumbAlways = FALSE;
  15. BOOL fLeftScroll  = FALSE;
  16. BOOL fEnableCSB   = TRUE;
  17. void InitTest(void)
  18. {
  19. hdcSkin  = CreateCompatibleDC(0);
  20. hSkinBmp = (HBITMAP)LoadImage(0, "skin01.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
  21. SelectObject(hdcSkin, hSkinBmp);
  22. // DeleteEnhMetaFile(hemf);
  23. }
  24. void RedrawNC(HWND hwnd)
  25. {
  26. SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_NOACTIVATE|
  27. SWP_FRAMECHANGED|SWP_DRAWFRAME);
  28. }
  29. void ToggleMenuCheck(HMENU menu, UINT menuid)
  30. {
  31. MENUITEMINFO mii;
  32. mii.cbSize = sizeof(mii);
  33. mii.fMask  = MIIM_STATE;
  34. GetMenuItemInfo(menu, menuid, FALSE, &mii);
  35. if(mii.fState & MFS_CHECKED)
  36. CheckMenuItem(menu, menuid, MF_UNCHECKED);
  37. else
  38. CheckMenuItem(menu, menuid, MF_CHECKED);
  39. }
  40. void MenuCheckMark (HMENU hmenu, int id, BOOL bCheck)
  41. {
  42. int iState;
  43. iState = (bCheck) ? MF_CHECKED : MF_UNCHECKED;
  44. CheckMenuItem(hmenu, id, iState);
  45. }
  46. void InsertButtons(HWND hwnd)
  47. {
  48. SCROLLBUT sbut;
  49. HINSTANCE hInst = GetModuleHandle(0);
  50. //
  51. // Horizontal buttons
  52. //
  53. sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT;// | SBBF_CURSOR;
  54. sbut.uCmdId = 0;
  55. sbut.nSize = 7;
  56. sbut.uPlacement = SBBP_LEFT;
  57. sbut.uButType   = SBBT_FIXED;
  58. // sbut.hCurs = LoadCursor(hInst, MAKEINTRESOURCE(IDC_SIZELR));
  59. CoolSB_InsertButton(hwnd, SB_HORZ, (UINT)-1, &sbut);
  60. sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT;
  61. sbut.uCmdId = 650;
  62. sbut.nSize = -1;
  63. sbut.uPlacement = SBBP_LEFT;
  64. sbut.uButType   = SBBT_PUSHBUTTON | SBBM_LEFTARROW;
  65. CoolSB_InsertButton(hwnd, SB_HORZ, (UINT)-1, &sbut);
  66. sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT;
  67. sbut.uCmdId = 651;
  68. sbut.nSize = -1;
  69. sbut.uPlacement = SBBP_LEFT;
  70. sbut.uButType   = SBBT_PUSHBUTTON | SBBM_RIGHTARROW;
  71. CoolSB_InsertButton(hwnd, SB_HORZ, (UINT)-1, &sbut);
  72. sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT ;
  73. sbut.uCmdId = 666;
  74. sbut.nSize = 120;
  75. sbut.uPlacement = SBBP_LEFT;
  76. sbut.uButType   = SBBT_OWNERDRAW | SBBM_RESIZABLE;//SBBT_PUSHBUTTON2;
  77. sbut.nMinSize = 0;
  78. sbut.nMaxSize = (UINT)-1;
  79. CoolSB_InsertButton(hwnd, SB_HORZ, (UINT)-1, &sbut);
  80. sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT;// | SBBF_CURSOR;
  81. sbut.uCmdId = 668;
  82. sbut.nSize = 5;
  83. sbut.uPlacement = SBBP_LEFT;
  84. sbut.uButType   = SBBT_FIXED;
  85. //sbut.hCurs = LoadCursor(hInst, MAKEINTRESOURCE(IDC_SIZELR));
  86. CoolSB_InsertButton(hwnd, SB_HORZ, (UINT)-1, &sbut);
  87. //
  88. // Vertical buttons
  89. //
  90. sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT | SBBF_BITMAP;
  91. sbut.uCmdId = 680;
  92. sbut.nSize = -1;
  93. sbut.uPlacement = SBBP_RIGHT;
  94. sbut.uButType   = SBBT_PUSHBUTTON | SBBM_TYPE2 | SBBM_RECESSED;
  95. sbut.hBmp = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BITMAP1));
  96. CoolSB_InsertButton(hwnd, SB_VERT, (UINT)-1, &sbut);
  97. sbut.uCmdId = 681;
  98. sbut.nSize = -1;
  99. sbut.uPlacement = SBBP_RIGHT;
  100. sbut.uButType   = SBBT_TOGGLEBUTTON | SBBM_TYPE2 | SBBM_RECESSED;
  101. CoolSB_InsertButton(hwnd, SB_VERT, (UINT)-1, &sbut);
  102. sbut.fMask = SBBF_ID | SBBF_TYPE | SBBF_SIZE | SBBF_PLACEMENT;// | SBBF_CURSOR;
  103. sbut.uCmdId = VERT_GRIPPER;
  104. sbut.nSize = 7;
  105. sbut.uPlacement = SBBP_LEFT;
  106. sbut.uButType   = SBBT_FIXED;
  107. //sbut.hCurs = LoadCursor(hInst, MAKEINTRESOURCE(IDC_SIZEUD));
  108. CoolSB_InsertButton(hwnd, SB_VERT, (UINT)-1, &sbut);
  109. // InitMetaFile();
  110. CoolSB_ModifyButton(hwnd, SB_HORZ, (UINT)-1,0, &sbut);
  111. }
  112. void RemoveButtons(HWND hwnd)
  113. {
  114. CoolSB_RemoveButton(hwnd, SB_HORZ, 0, FALSE);
  115. CoolSB_RemoveButton(hwnd, SB_HORZ, 0, FALSE);
  116. CoolSB_RemoveButton(hwnd, SB_HORZ, 0, FALSE);
  117. CoolSB_RemoveButton(hwnd, SB_HORZ, 0, FALSE);
  118. CoolSB_RemoveButton(hwnd, SB_HORZ, 0, FALSE);
  119. CoolSB_RemoveButton(hwnd, SB_VERT, 0, FALSE);
  120. CoolSB_RemoveButton(hwnd, SB_VERT, 0, FALSE);
  121. CoolSB_RemoveButton(hwnd, SB_VERT, 0, FALSE);
  122. }
  123. LRESULT CommandHandler(HWND hwnd, WPARAM wParam, LPARAM lParam)
  124. {
  125. HMENU hmenu = GetMenu(hwnd);
  126. if(LOWORD(wParam) == VK_ESCAPE)
  127. {
  128. EndDialog(hwnd, 0);
  129. return 0;
  130. }
  131. switch(LOWORD (wParam))
  132. {
  133. case ID_VIEW_NORMAL:
  134. CoolSB_SetStyle(hwndCtrl, SB_BOTH, CSBS_NORMAL);
  135. MenuCheckMark(hmenu, ID_VIEW_NORMAL, TRUE);
  136. MenuCheckMark(hmenu, ID_VIEW_FLAT, FALSE);
  137. MenuCheckMark(hmenu, ID_VIEW_HOTTRACKED, FALSE);
  138. return 0;
  139. case ID_VIEW_FLAT:
  140. CoolSB_SetStyle(hwndCtrl, SB_BOTH, CSBS_FLAT);
  141. MenuCheckMark(hmenu, ID_VIEW_NORMAL, FALSE);
  142. MenuCheckMark(hmenu, ID_VIEW_FLAT, TRUE);
  143. MenuCheckMark(hmenu, ID_VIEW_HOTTRACKED, FALSE);
  144. return 0;
  145. case ID_VIEW_HOTTRACKED:
  146. CoolSB_SetStyle(hwndCtrl, SB_BOTH, CSBS_HOTTRACKED);
  147. MenuCheckMark(hmenu, ID_VIEW_NORMAL, FALSE);
  148. MenuCheckMark(hmenu, ID_VIEW_FLAT, FALSE);
  149. MenuCheckMark(hmenu, ID_VIEW_HOTTRACKED, TRUE);
  150. return 0;
  151. case ID_VIEW_CUSTOMDRAW:
  152. fCustomDraw = !fCustomDraw;
  153. ToggleMenuCheck(hmenu, ID_VIEW_CUSTOMDRAW);
  154. if(fCustomDraw)
  155. {
  156. CoolSB_SetSize(hwndCtrl, SB_BOTH, 18, 18);
  157. CoolSB_SetMinThumbSize(hwndCtrl, SB_BOTH, 18);
  158. }
  159. else
  160. {
  161. CoolSB_SetSize(hwndCtrl, SB_BOTH, SYSTEM_METRIC, SYSTEM_METRIC);
  162. CoolSB_SetMinThumbSize(hwndCtrl, SB_BOTH, (UINT)-1);
  163. }
  164. RedrawNC(hwndCtrl);
  165. return 0;
  166. case ID_VIEW_INSERTEDBUTTONS:
  167. fButtons = !fButtons;
  168. ToggleMenuCheck(hmenu, ID_VIEW_INSERTEDBUTTONS);
  169. if(fButtons)
  170. InsertButtons(hwndCtrl);
  171. else
  172. RemoveButtons(hwndCtrl);
  173. RedrawNC(hwndCtrl);
  174. return 0;
  175. case ID_VIEW_THUMBALWAYS:
  176. fThumbAlways = !fThumbAlways;
  177. ToggleMenuCheck(hmenu, ID_VIEW_THUMBALWAYS);
  178. CoolSB_SetThumbAlways(hwndCtrl, SB_BOTH, fThumbAlways);
  179. RedrawNC(hwndCtrl);
  180. return 0;
  181. case ID_VIEW_ENABLE:
  182. fEnableCSB = !fEnableCSB;
  183. ToggleMenuCheck(hmenu, ID_VIEW_ENABLE);
  184. if(fEnableCSB)
  185. InitializeCoolSB(hwndCtrl);
  186. else
  187. UninitializeCoolSB(hwndCtrl);
  188. return 0;
  189. case ID_VIEW_LEFTSCROLLBAR:
  190. fLeftScroll = !fLeftScroll;
  191. ToggleMenuCheck(hmenu, ID_VIEW_LEFTSCROLLBAR);
  192. if(fLeftScroll)
  193. SetWindowLong(hwndCtrl, GWL_EXSTYLE, WS_EX_CLIENTEDGE |  WS_EX_LEFTSCROLLBAR);
  194. else
  195. SetWindowLong(hwndCtrl, GWL_EXSTYLE, WS_EX_CLIENTEDGE & ~WS_EX_LEFTSCROLLBAR);
  196. return 0;
  197. case IDM_FILE_ABOUT:
  198. MessageBox(hwnd, "Cool Scrollbar librarynrBy J Brown", "CoolScroll Demo", MB_OK | MB_ICONINFORMATION);
  199. return 0;
  200. case IDCANCEL: 
  201. EndDialog(hwnd, 0);
  202. break;
  203. }
  204. return 0;
  205. }