45.11 case WM_VSCROLL: |
46.11 switch(LOWORD(wParam)) |
47.11 case SB_TOP: //the HOME keyboard key is clicked |
48.11 yInc = -yPos; break; |
49.11 case SB_BOTTOM: //the END keyboard key is clicked |
50.11 yInc = yMax - yPos; break; |
51.11 case SB_LINEUP: //the top arrow is clicked |
52.11 yInc = -1; break; |
53.11 case SB_LINEDOWN: //the bottom arrow is clicked |
54.11 yInc = 1; break; |
55.11 case SB_PAGEUP: //scroll bar shaft above the scroll box |
56.11 yInc = min(-1, -yClient/yChar); break; // is clicked |
57.11 case SB_PAGEDOWN: // scroll bar shaft below the scroll |
58.11 yInc = max(1, yClient/yChar); break; //box is clicked |
59.11 case SB_THUMBTRACK: // user is dragging the scroll box |
60.11 yInc = HIWORD(wParam)-yPos; break; |
61.11 default: |
62.11 yInc = 0; break; |
63.11 |
64.11 yInc = max(-yPos, min(yInc, yMax - yPos)); |
65.11 if(yInc != 0) |
66.11 yPos += yInc; |
67.11 SetScrollPos(hwnd, SB_VERT, yPos, TRUE); |
68.11 ScrollWindow(hwnd, 0, -yChar*yInc, NULL, NULL); |
69.11 |
70.11 break; |
71.11 case WM_HSCROLL: |
72.11 xPosOld = xPos; |
73.11 switch(LOWORD(wParam)) |
74.11 case SB_PAGERIGHT: |
75.11 xPos += 10; break; |
76.11 case SB_LINERIGHT: |
77.11 xPos += 1; break; |
78.11 case SB_PAGELEFT: |
79.11 xPos -= 10; break; |
80.11 case SB_LINELEFT: |
81.11 xPos -= 1; break; |
82.11 case SB_TOP: |
83.11 xPos = xMin; break; |
84.11 case SB_BOTTOM: |
85.11 xPos = xMax; break; |
86.11 case SB_THUMBTRACK: |
87.11 xPos = HIWORD(wParam); break; |
88.11 default: break; |
89.11 |
90.11 if(xPos > xMax) xPos = xMax; |
91.11 if(xPos < xMin) xPos = xMin; |
92.11 SetScrollPos(hwnd, SB_HORZ, xPos, TRUE); |
93.11 if(xPos == xMax) |
94.11 EnableScrollBar(hwnd, SB_HORZ, ESB_DISABLE_RIGHT); |
95.11 if(xPos != xPosOld) |
96.11 ScrollWindow(hwnd, xChar*(xPosOld-xPos), 0, NULL, NULL); |
97.11 break; |