Well, our winhelp may be lacking 90% of the features of the native version, but at least native win98 winhelp doesn't have mouse wheel support and now ours does. We rule! Mike Hearn <mike@theoretic.com> Implement mouse wheel support in winhelp --- ../head/programs/winhelp/winhelp.c 2003-09-11 16:27:16.000000000 +0100 +++ programs/winhelp/winhelp.c 2003-09-15 21:48:49.000000000 +0100 @@ -24,6 +24,7 @@ #include <stdio.h> #include <string.h> #include <stdarg.h> +#include <stdlib.h> #include "windef.h" #include "winbase.h" @@ -811,6 +812,36 @@ if (!(winpos->flags & SWP_NOSIZE)) WINHELP_SetupText(hWnd); break; + case WM_MOUSEWHEEL: + { + int wheelDelta = 0; + UINT scrollLines = 3; + int curPos = GetScrollPos(hWnd, SB_VERT); + int min, max; + + GetScrollRange(hWnd, SB_VERT, &min, &max); + + SystemParametersInfo(SPI_GETWHEELSCROLLLINES,0, &scrollLines, 0); + if (wParam & (MK_SHIFT | MK_CONTROL)) + return DefWindowProc(hWnd, msg, wParam, lParam); + wheelDelta -= SHIWORD(wParam); + if (abs(wheelDelta) >= WHEEL_DELTA && scrollLines) { + int dy; + + curPos += wheelDelta; + if (curPos > max) + curPos = max; + else if (curPos < min) + curPos = min; + + dy = GetScrollPos(hWnd, SB_VERT) - curPos; + SetScrollPos(hWnd, SB_VERT, curPos, TRUE); + ScrollWindow(hWnd, 0, dy, NULL, NULL); + UpdateWindow(hWnd); + } + } + break; + case WM_VSCROLL: { BOOL update = TRUE;