예제 #1
0
        // mouse event
        public string OnMouseDoubleClick()
        {
            string             value = "";
            OnMouseDoubleClick oo    = new OnMouseDoubleClick(this.s, this.header);
            Type       t             = oo.GetType();
            MethodInfo mi;
            object     o;

            mi = t.GetMethod("MouseDoubleClick" + this.reference(3) + this.reference(4));
            try
            {
                o     = mi.Invoke(oo, null);
                value = (string)o;
            }
            catch (NullReferenceException)
            {
                mi = t.GetMethod("MouseDoubleClick" + this.reference(3));
                try
                {
                    o     = mi.Invoke(oo, null);
                    value = (string)o;
                }
                catch (NullReferenceException)
                {
                }
            }
            return(value);
        }
예제 #2
0
 // mouse event
 public string OnMouseDoubleClick()
 {
     string value = "";
     OnMouseDoubleClick oo = new OnMouseDoubleClick(this.s, this.header);
     Type t = oo.GetType();
     MethodInfo mi;
     object o;
     mi = t.GetMethod("MouseDoubleClick" + this.reference(3) + this.reference(4));
     try
     {
         o = mi.Invoke(oo, null);
         value = (string)o;
     }
     catch (NullReferenceException)
     {
         mi = t.GetMethod("MouseDoubleClick" + this.reference(3));
         try
         {
             o = mi.Invoke(oo, null);
             value = (string)o;
         }
         catch (NullReferenceException)
         {
         }
     }
     return value;
 }
예제 #3
0
파일: Mouse.cs 프로젝트: nchos88/SOA
        private void HookMouseCallback(HookData hookData)
        {
            MouseEventInformation info = MouseEventInformation.Get(hookData);

            int          mx     = info.X;
            int          my     = info.Y;
            MouseButtons button = info.Button;

            // 마우스 다운
            if (info.IsMouseDown)
            {
                if (IsDoubleClick(info))
                {
                    info = info.ToDobuleClickMouseEventInformation();
                }

                OnMouseDown?.Invoke(mx, my, button);

                if (info.Clicks == 2)
                {
                    m_DoubleButton |= info.Button;
                }

                if (info.Clicks == 1)
                {
                    m_SingleButton |= button;
                }
            }

            // 마우스 업
            if (info.IsMouseUp)
            {
                OnMouseUp?.Invoke(mx, my, button);

                // 마우스 클릭
                if ((m_SingleButton & button) != MouseButtons.None)
                {
                    OnMouseClick?.Invoke(mx, my, button);
                    m_SingleButton &= ~button;
                }

                // 마우스 더블 클릭
                if ((m_DoubleButton & button) != MouseButtons.None)
                {
                    OnMouseDoubleClick?.Invoke(mx, my, button);
                    m_DoubleButton &= ~button;
                }

                if (info.Clicks == 2)
                {
                    m_PreviousClickedButton = MouseButtons.None;
                    m_PreviousClickedTime   = 0;
                    m_PreviousClickedX      = m_DefaultPositionXY;
                    m_PreviousClickedY      = m_DefaultPositionXY;
                }

                if (info.Clicks == 1)
                {
                    m_PreviousClickedButton = info.Button;
                    m_PreviousClickedTime   = info.Timestamp;
                    m_PreviousClickedX      = mx;
                    m_PreviousClickedY      = my;
                }
            }

            // 마우스 스크롤
            if (info.IsMouseWheelScrolled)
            {
                OnMouseWheel?.Invoke(mx, my, button, info.Delta > 0 ? 1 : -1);
            }

            // 마우스 이동
            if (IsMoved(mx, my))
            {
                m_PreviousX = mx;
                m_PreviousY = my;

                OnMouseMove?.Invoke(mx, my, button);
            }

            // 마우스 드래그
            if ((m_SingleButton & MouseButtons.Left) != MouseButtons.None)
            {
                if (m_DragStartPositionX == m_DefaultPositionXY && m_DragStartPositionY == m_DefaultPositionXY)
                {
                    m_DragStartPositionX = mx;
                    m_DragStartPositionY = my;
                }

                // 마우스 드래그 스타트
                if (m_dragMode == false)
                {
                    bool isXDragging = Math.Abs(mx - m_DragStartPositionX) > m_SystemDragX;
                    bool isYDragging = Math.Abs(my - m_DragStartPositionY) > m_SystemDragY;

                    m_dragMode = isXDragging || isYDragging;

                    if (m_dragMode == true)
                    {
                        OnMouseDragStart?.Invoke(mx, my, button);
                    }
                }
            }
            else
            {
                m_DragStartPositionX = m_DefaultPositionXY;
                m_DragStartPositionY = m_DefaultPositionXY;

                // 마우스 드래그 엔드
                if (m_dragMode == true)
                {
                    OnMouseDragEnd?.Invoke(mx, my, button);

                    m_dragMode = false;
                }
            }
        }