protected override void WndProc(ref Message m)
        {
            PAINTSTRUCT ps = new PAINTSTRUCT();
            switch (m.Msg)
            {
                case WM_PAINT:
                    if (!_bPainting)
                    {
                        _bPainting = true;
                        // start painting engine
                        BeginPaint(m.HWnd, ref ps);
                        if (!_bFading)
                        drawCombo();
                        ValidateRect(m.HWnd, ref ps.rcPaint);
                        // done
                        EndPaint(m.HWnd, ref ps);
                        _bPainting = false;
                        m.Result = MSG_HANDLED;
                    }
                    else
                    {
                        base.WndProc(ref m);
                    }
                    break;

                case WM_MOUSEMOVE:
                    if (!_bMoved)
                    {
                        if (TransitionGraphic != null)
                        {
                            RECT tr = comboButton();
                            _bFading = true;
                            cTransition ts = new cTransition(m.HWnd, IntPtr.Zero, TransitionGraphic, new Rectangle(tr.Left, tr.Top, tr.Right - tr.Left, tr.Bottom - tr.Top));
                        }
                    }
                    if (overButton())
                        _bMoved = true;
                    base.WndProc(ref m);
                    break;

                case WM_MOUSELEAVE:
                    _bMoved = false;
                    _bFading = false;
                    base.WndProc(ref m);
                    break;

                default:
                    base.WndProc(ref m);
                    break;
            }
        }
 private void scrollFader()
 {
     return;
     SB_HITEST hitTest = scrollbarHitTest();
     if (hitTest == SB_HITEST.button)
     {
         Point pst = getScrollBarThumb();
         if (TransitionGraphic != null)
         {
             cTransition ts;
             RECT tr = new RECT();
             if (Direction == Orientation.Horizontal)
             {
                 GetWindowRect(_hScrollBarWnd, ref tr);
                 ts = new cTransition(_hMaskWnd, _hScrollBarWnd, TransitionGraphic, new Rectangle(pst.X, 0, pst.Y - pst.X, tr.Bottom));
             }
             else
             {
                 ts = new cTransition(_hMaskWnd, _hScrollBarWnd, TransitionGraphic, new Rectangle(0, pst.X, _iArrowCx, pst.Y - pst.X));
             }
         }
     }
 }
 private void ctl_MouseEnter(object sender, EventArgs e)
 {
     if (TransitionGraphic != null)
     {
         Control ct = (Control)sender;
         cTransition ts = new cTransition(ct.Handle, IntPtr.Zero, _oTransitionMask, ct.ClientRectangle);
     }
 }