public void PrintTree() { if (Value == '\0') { return; } else { Console.Write(this.Value); } if (LeftUp != null) { LeftUp.PrintTree(); } if (RightUp != null) { RightUp.PrintTree(); } if (LeftDown != null) { LeftDown.PrintTree(); } if (RightDown != null) { RightDown.PrintTree(); } }
public override int HookProcEvent(int nCode, Int32 wParam, IntPtr lParam) { //如果正常运行并且用户要监听鼠标的消息 if (nCode >= 0) { MouseButtons button = MouseButtons.None; int clickCount = 0; int delta = 0; MouseHookStruct MyMouseHookStruct = (MouseHookStruct)Marshal.PtrToStructure(lParam, typeof(MouseHookStruct)); MouseEventArgs e; switch ((int)wParam) { case Const.WM_LBUTTONDOWN: LastMouseDownTimeSpan = Environment.TickCount; button = MouseButtons.Left; clickCount = 1; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); LeftDown?.Invoke(this, e); break; case Const.WM_LBUTTONUP: LastMouseDownTimeSpan = Environment.TickCount; button = MouseButtons.Left; clickCount = 1; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); LeftUp?.Invoke(this, e); break; case Const.WM_MBUTTONDOWN: button = MouseButtons.Middle; clickCount = 1; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); MiddleDown?.Invoke(this, e); break; case Const.WM_MBUTTONUP: button = MouseButtons.Middle; clickCount = 1; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); MiddleUp?.Invoke(this, e); break; case Const.WM_RBUTTONDOWN: button = MouseButtons.Right; clickCount = 1; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); RightDown?.Invoke(this, e); break; case Const.WM_RBUTTONUP: button = MouseButtons.Right; clickCount = 1; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); RightUp?.Invoke(this, e); break; case Const.WM_MOUSEWHEEL: if (!mouseLeftDown) { button = MouseButtons.Middle; clickCount = 0; delta = MyMouseHookStruct.hWnd >> 16; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); MouseWheel?.Invoke(this, e); } break; case Const.WM_MOUSEMOVE: button = MouseButtons.None; clickCount = 0; e = new MouseEventArgs(button, clickCount, MyMouseHookStruct.pt.X, MyMouseHookStruct.pt.Y, delta); MouseMove?.Invoke(this, e); break; } } return(CallNextHookEx(hwndHook, nCode, wParam, lParam)); }