private bool hookMouse_HookInvoked(object sender, HookEventArgs e) { if (e.wParam == (IntPtr)513 || e.wParam == (IntPtr)519 || (e.wParam == (IntPtr)516 || e.wParam == (IntPtr)161) || (e.wParam == (IntPtr)167 || e.wParam == (IntPtr)164)) { WindowsHook.MSLLHOOKSTRUCT structure = (WindowsHook.MSLLHOOKSTRUCT)Marshal.PtrToStructure(e.lParam, typeof(WindowsHook.MSLLHOOKSTRUCT)); Point p = new Point(structure.pt.x, structure.pt.y); try { if (!this.ActiveDropDown.ClientRectangle.Contains(this.ActiveDropDown.PointToClient(p))) { for (int index1 = this.DropDowns.Count - 2; index1 >= 0; --index1) { Point client = this.DropDowns[index1].PointToClient(p); if (this.DropDowns[index1].ClientRectangle.Contains(client)) { for (int index2 = this.DropDowns.Count - 1; index2 > index1; --index2) { this.DropDowns[index2].ClosePopup(RadPopupCloseReason.Mouse); } return(true); } } this.UnRegisterAllMenus(); } } catch { this.UnRegisterAllMenus(); } } return(true); }
private bool hookMouse_HookInvoked(object sender, HookEventArgs e) { if (e.wParam == (IntPtr)NativeMethods.WM_LBUTTONDOWN || e.wParam == (IntPtr)NativeMethods.WM_MBUTTONDOWN || e.wParam == (IntPtr)NativeMethods.WM_RBUTTONDOWN || e.wParam == (IntPtr)NativeMethods.WM_NCLBUTTONDOWN || e.wParam == (IntPtr)NativeMethods.WM_NCMBUTTONDOWN || e.wParam == (IntPtr)NativeMethods.WM_NCRBUTTONDOWN) { WindowsHook.MSLLHOOKSTRUCT hookStruct = (WindowsHook.MSLLHOOKSTRUCT)Marshal.PtrToStructure(e.lParam, typeof(WindowsHook.MSLLHOOKSTRUCT)); Point point = new Point(hookStruct.pt.x, hookStruct.pt.y); try { if (!ActiveDropDown.ClientRectangle.Contains(ActiveDropDown.PointToClient(point))) { for (int i = DropDowns.Count - 2; i >= 0; i--) { Point p = DropDowns[i].PointToClient(point); if (DropDowns[i].ClientRectangle.Contains(p)) { for (int k = DropDowns.Count - 1; k > i; k--) { DropDowns[k].ClosePopup(RadPopupCloseReason.Mouse); } return(true); } } UnRegisterAllMenus(); } } catch { UnRegisterAllMenus(); } } return(true); }