on WM_HSCROLL */
| 786 | |
| 787 | /* on WM_HSCROLL */ |
| 788 | void |
| 789 | onMSNH_HScroll(HWND hWnd, WPARAM wParam, LPARAM lParam) |
| 790 | { |
| 791 | PNHMapWindow data; |
| 792 | SCROLLINFO si; |
| 793 | int xNewPos; |
| 794 | int xDelta; |
| 795 | |
| 796 | /* get window data */ |
| 797 | data = (PNHMapWindow) GetWindowLong(hWnd, GWL_USERDATA); |
| 798 | |
| 799 | switch (LOWORD(wParam)) { |
| 800 | /* User clicked shaft left of the scroll box. */ |
| 801 | case SB_PAGEUP: |
| 802 | xNewPos = data->xPos - data->xPageSize; |
| 803 | break; |
| 804 | |
| 805 | /* User clicked shaft right of the scroll box. */ |
| 806 | case SB_PAGEDOWN: |
| 807 | xNewPos = data->xPos + data->xPageSize; |
| 808 | break; |
| 809 | |
| 810 | /* User clicked the left arrow. */ |
| 811 | case SB_LINEUP: |
| 812 | xNewPos = data->xPos - 1; |
| 813 | break; |
| 814 | |
| 815 | /* User clicked the right arrow. */ |
| 816 | case SB_LINEDOWN: |
| 817 | xNewPos = data->xPos + 1; |
| 818 | break; |
| 819 | |
| 820 | /* User dragged the scroll box. */ |
| 821 | case SB_THUMBTRACK: |
| 822 | xNewPos = HIWORD(wParam); |
| 823 | break; |
| 824 | |
| 825 | default: |
| 826 | xNewPos = data->xPos; |
| 827 | } |
| 828 | |
| 829 | xNewPos = max(0, min(COLNO - data->xPageSize + 1, xNewPos)); |
| 830 | if (xNewPos == data->xPos) |
| 831 | return; |
| 832 | |
| 833 | xDelta = xNewPos - data->xPos; |
| 834 | data->xPos = xNewPos; |
| 835 | |
| 836 | ScrollWindowEx(hWnd, -data->xScrTile * xDelta, 0, (CONST RECT *) NULL, |
| 837 | (CONST RECT *) NULL, (HRGN) NULL, (LPRECT) NULL, |
| 838 | SW_INVALIDATE | SW_ERASE); |
| 839 | |
| 840 | if (!GetNHApp()->bHideScrollBars) { |
| 841 | si.cbSize = sizeof(si); |
| 842 | si.fMask = SIF_POS; |
| 843 | si.nPos = data->xPos; |
| 844 | SetScrollInfo(hWnd, SB_HORZ, &si, TRUE); |
| 845 | } |
no test coverage detected