MouseWheel events are often a pain, as they are not part of the original Win32 API, and diverted to extra DLLs like those in IntelliPoint or Logitech mouse software. Standard window behaviour is to bubble the event to a parent window, and wheel scrolls are automatically handled. From your description, it sounds like wheel events are processed before OnMouseWheel() is called to signal the event, so presumably it just acts as a post-event notification. I have struggled with this before in both MFC and .Net. You might want to intercept WM_MOUSEWHEEL earlier on, by overriding PreProcessMessage(). Controls intercept all, and pre-handle several messages, at that stage, before passing the messages (and some never propogate further) to the defined event handlers. By not passing WM_MOUSEWHEEL to base.PreProcessMessage(), you should be able to keep the parent from handling it. Cheers