| 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; |