protected override void WndProc(ref Message m)
{
// There are certain messages that we want to process
// regardless of what window target we are using. These
// messages cause other messages or state transitions
// to occur within control.
switch ((User32.WM)m.Msg)
{
case User32.WM.MOUSELEAVE:
_control.UnhookMouseEvent();
break;
case User32.WM.MOUSEMOVE:
if (!_control.GetState(States.TrackingMouseEvent))
{
_control.HookMouseEvent();
if (!_control.GetState(States.MouseEnterPending))
{
User32.SendMessageW(_control, User32.RegisteredMessage.WM_MOUSEENTER);
}
else
{
_control.SetState(States.MouseEnterPending, false);
}
}
break;
case User32.WM.MOUSEWHEEL:
// TrackMouseEvent's mousehover implementation doesn't watch the wheel
// correctly...
_control.ResetMouseEventArgs();
break;
}
WindowTarget.OnMessage(ref m);
}