Somehow I did not find the bug report subforum, sorry for that.
Under Windows the translation from WM_MOUSEWHEEL to sf::Event::MouseWheelMoved in SFML/Window/Win32/WindowImplWin32.cpp:603 is wrong for SFML 2.1. The WM_MOUSEWHEEL goes in WHEEL_DELTA units, which is 120. The line says
event.mouseWheel.delta = static_cast<Int16>(HIWORD(wParam)) / 120;
The Windows documentation states
The delta was set to 120 to allow Microsoft or other vendors to build finer-resolution wheels (a freely-rotating wheel with no notches) to send more messages per rotation, but with a smaller value in each message.
I have one of those mice (mouses?). If I scroll 1 notch, HIWORD(wParam) will be 112. It is then rounded down to 0 when it is divided by 120. Consequently in SFML I get lots of sf::Event::MouseWheelMoved with event.mouseWheel.delta equaling 0. When scrolling very fast so Windows reports scrolldistances bigger than 112 it sort of works.
Quick workaround:
Change the offending line to
event.mouseWheel.delta = static_cast<Int16>((HIWORD(wParam)) + 60) / 120;
That way at least the scrolling sort of works.
Real solution:
Change the type of event.mouseWheel.delta to float and the line to
event.mouseWheel.delta = (HIWORD(wParam)) / 120.f;
For extra style points change the magic number 120 to the Windows defined macro WHEEL_DELTA.
PS: How come the forum supports marquee and glow text, but no C++-code tags?
Edit: My recommended quick workaround only works for scrolling up, which is insufficient. New workaround:
event.mouseWheel.delta = (static_cast<Int16>(HIWORD(wParam)) * 3 / 2) / WHEEL_DELTA;
But its still a bad hack.