An horizontal scroll can already be realized with an ordinary mouse. You simply use the wheel and press the shift key at the same time.
You can test that behaviour with a modern internet browser, e.g. Chrome, and http://codeguru/forum/ . Resize the window in order to see the horizontal scrollbar. Then, press the shilft key and roll the wheel of your mouse. You can see an horizontal scroll.
I don't have a mouse with a special wheel for an horizontal scrolling, but I am pretty sure it works by simulating a pressure on the shift key and a motion of the wheel. In your program you would watch the WM_MOUSEWHEEL message (or onMouseWheel if you program with MFC) and watch the state of the shift key with GetKeyState(VK_SHIFT).
Handle WM_MOUSEHWHEEL message as well.
Note that requires at least Windows Vista and Windows Server 2008 (_WIN32_WINNT >= 0x0600).
You can try to setting _WIN32_WINNT=0x0600 in your preprocessor settings. If the mouse driver sends the WM_MOUSEWHEEL message you probably can handle the message even if not officially supported by the OS version.
To call a handler from a handler normally isn't so good an idea cause each handler function available might return 0 (== not handled) what causes the dispatcher to search for another handler in the chain of windows. When you call CTrackView::OnMouseWheel you actually break that kind of logic. So, you better send a WM_MOUSEWHEEL message and before set the 'Shift Key' to be pressed by calling SetKeyboardState. Probably you also have to send a WM_KEYDOWN message before. After that you can return with 1 (== handled) cause now the normal handling of the vertical mouse wheel handling should happen and if you were lucky it should recognize the SHIFT key is being pressed.