I guess my original solution should be ok if I can assume the events come in pairs, and the user has a trackpad or trackball, not an antique (?) mouse with a single wheel.
It would be nice though to have one event, maybe:
MouseWheelHorzVert(Sender: TObject; Shift: TShiftState;
WheelDeltaX, WheelDeltaY: Integer; MousePos: TPoint; var Handled: Boolean);
Not a complaint, as I am grateful to see the new event handlers, just a thought.
It is not crucial, but gives the user some expected behavior. I was having them hold down the Shift key to scroll with the mouse, not very intuitive. Of course the scrollbars are available.
I'd appreciate any additional thoughts, especially insight into using PeekMessage, or what the sequence of MouseWheel and MouseWheelHorz messages is.
EDIT: Regarding the desire to limit the redraws, some of my users load very large high resolution images.