示例#1
0
 public bool isFlag(MouseState.Flags flags, WPARAM wParam, uint code1, uint code2)
 {
     if ((listener.Handler & flags) != 0 &&
         (SysMessages.EqOr(wParam, code1, code2)))
     {
         return(true);
     }
     return(false);
 }
示例#2
0
 protected bool isLMR(WPARAM wParam)
 {
     if (SysMessages.EqOr(wParam,
                          SysMessages.WM_LBUTTONDOWN,
                          SysMessages.WM_LBUTTONUP,
                          SysMessages.WM_MBUTTONDOWN,
                          SysMessages.WM_MBUTTONUP,
                          SysMessages.WM_RBUTTONDOWN,
                          SysMessages.WM_RBUTTONUP))
     {
         return(true);
     }
     return(false);
 }
        /// <param name="nCode">A code that uses to determine how to process the message.</param>
        /// <param name="wParam">The identifier of the mouse message.</param>
        /// <param name="lParam">A pointer to an MSLLHOOKSTRUCT structure.</param>
        /// <returns></returns>
        public override FilterResult msg(int nCode, WPARAM wParam, LPARAM lParam)
        {
            if (Data == null || !SysMessages.EqOr(wParam, SysMessages.WM_MOUSEWHEEL))
            {
                //TODO: SysMessages.WM_MOUSEHWHEEL
                return(FilterResult.Continue);
            }
            var llhook = getMSLLHOOKSTRUCT(lParam);

            uint delta = llhook.time - prevStamp;
            var  v     = (TData)Data;

            if (delta > v.limit)
            {
                count = 0;
            }
            else
            {
                ++count;
            }

            if (count > v.capacity)
            {
                LSender.Send(this, $"Scroll has been filtered {wParam}/{count} = {v.capacity}:{v.limit}", Message.Level.Info);
                ((IMouseListenerSvc)this).trigger();
                return(FilterResult.Abort);
            }

            //if(delta < v.acceleration && count > v.capacity) {
            //    ++accelerationCount;
            //}

            LSender.Send(this, $"MouseData: count {count} - delta {delta}", Message.Level.Trace);
            prevStamp = llhook.time;

            return(FilterResult.Continue);
        }