private int MouseHookProc(int nCode, IntPtr wParam, IntPtr lParam) { if (nCode < 0) { return(Win32Api.CallNextHookEx(hHook, nCode, wParam, lParam)); } else { switch ((int)wParam) { case WM_LBUTTONDOWN: MouseStateChanged?.Invoke(this, new MouseStateChangedEventArgs(1, true)); break; case WM_RBUTTONDOWN: MouseStateChanged?.Invoke(this, new MouseStateChangedEventArgs(2, true)); break; case WM_MBUTTONDOWN: MouseStateChanged?.Invoke(this, new MouseStateChangedEventArgs(3, true)); break; case WM_LBUTTONUP: MouseStateChanged?.Invoke(this, new MouseStateChangedEventArgs(1, false)); break; case WM_RBUTTONUP: MouseStateChanged?.Invoke(this, new MouseStateChangedEventArgs(2, false)); break; case WM_MBUTTONUP: MouseStateChanged?.Invoke(this, new MouseStateChangedEventArgs(3, false)); break; } return(Win32Api.CallNextHookEx(hHook, nCode, wParam, lParam)); } }
/// <summary>Invokes the mouse state changed event.</summary> /// <param name="e">The event args.</param> protected virtual void OnMouseStateChanged(MouseStateEventArgs e) { Invalidate(); MouseStateChanged?.Invoke(e); }
/// <summary>Invokes the mouse state changed event.</summary> /// <param name="sender">The sender.</param> /// <param name="e">The event args.</param> protected virtual void OnMouseStateChanged(object sender, MouseStateEventArgs e) { Invalidate(); MouseStateChanged?.Invoke(sender, e); }