When the user pushes the middle button in your client area, Windows will send a WM_MBUTTONDOWN message, similar as WM_LBUTTONDOWN too u. You can overload it to implement your action. When the middle button is moving(let's just say so), u will receive a WM_MOUSEWHEEL message. You can process this message just as you process WM_VSCROLL, but is easier.
By the way, if u want to have some special cursor, u'll have to use standard LoadCursor(From your own resource) and SetCursor API, according to the mouse action.
Why the default window does not implement this is because that it is imposible to know your scroll limit. You can provide your own class(which use virtual functions) to have the default process.