public bool PreFilterMessage(ref Message m) { try { Win32.WindowsMessages message = (Win32.WindowsMessages)m.Msg; if (message == Win32.WindowsMessages.WM_LBUTTONUP) { return(ProcessMouseMessage(ref m, MouseButtons.Left, true)); } else if (message == Win32.WindowsMessages.WM_RBUTTONUP) { return(ProcessMouseMessage(ref m, MouseButtons.Right, true)); } else if (message == Win32.WindowsMessages.WM_MBUTTONUP) { return(ProcessMouseMessage(ref m, MouseButtons.Middle, true)); } else if (message == Win32.WindowsMessages.WM_LBUTTONDOWN) { return(ProcessMouseMessage(ref m, MouseButtons.Left, false)); } else if (message == Win32.WindowsMessages.WM_RBUTTONDOWN) { return(ProcessMouseMessage(ref m, MouseButtons.Right, false)); } else if (message == Win32.WindowsMessages.WM_MBUTTONDOWN) { return(ProcessMouseMessage(ref m, MouseButtons.Middle, false)); } else if (message == Win32.WindowsMessages.WM_LBUTTONDBLCLK) { return(ProcessDblClickMessage(ref m, MouseButtons.Left)); } else if (message == Win32.WindowsMessages.WM_RBUTTONDBLCLK) { return(ProcessDblClickMessage(ref m, MouseButtons.Right)); } else if (message == Win32.WindowsMessages.WM_MBUTTONDBLCLK) { return(ProcessDblClickMessage(ref m, MouseButtons.Middle)); } else if (message == Win32.WindowsMessages.WM_MOUSEWHEEL) { return(ProcessMouseWheelMessage(ref m)); } else if (message == Win32.WindowsMessages.WM_KEYDOWN) { return(ProcessKeyMessage(ref m, false)); } else if (message == Win32.WindowsMessages.WM_KEYUP) { return(ProcessKeyMessage(ref m, true)); } else if (message == Win32.WindowsMessages.WM_CHAR) { return(ProcessKeyCharMessage(ref m)); } return(false); } catch { return(false); } }
private static IntPtr MyWndProc(IntPtr hWnd, Win32.WindowsMessages message, IntPtr wParam, IntPtr lParam) { switch (message) { case Win32.WindowsMessages.MOUSEMOVE: UInt16 x = (UInt16)((int)lParam & 0xFFFF); UInt16 y = (UInt16)(((int)lParam >> 16) & 0xFFFF); unsafe { Int16 ix = *(Int16 *)&x; Int16 iy = *(Int16 *)&y; UpdateMouse(ix, iy); } return(IntPtr.Zero); case Win32.WindowsMessages.SIZE: UpdateWindowSize((int)lParam & 0xFFFF, (int)(((int)lParam >> 16) & 0xFFFF)); return(IntPtr.Zero); case Win32.WindowsMessages.MOUSEWHEEL: UpdateMouseWheel(((short)((int)wParam >> 16))); return(IntPtr.Zero); case Win32.WindowsMessages.MOUSELEAVE: UpdateMouseFocus(false); return(IntPtr.Zero); case Win32.WindowsMessages.SETFOCUS: UpdateKeyFocus(true); return(IntPtr.Zero); case Win32.WindowsMessages.KILLFOCUS: UpdateKeyFocus(false); return(IntPtr.Zero); case Win32.WindowsMessages.KEYDOWN: UpdateKeyState((int)mapKeys[(int)wParam], true); return(IntPtr.Zero); case Win32.WindowsMessages.KEYUP: UpdateKeyState((int)mapKeys[(int)wParam], false); return(IntPtr.Zero); case Win32.WindowsMessages.LBUTTONDOWN: UpdateMouseState(0, true); return(IntPtr.Zero); case Win32.WindowsMessages.LBUTTONUP: UpdateMouseState(0, false); return(IntPtr.Zero); case Win32.WindowsMessages.RBUTTONDOWN: UpdateMouseState(1, true); return(IntPtr.Zero); case Win32.WindowsMessages.RBUTTONUP: UpdateMouseState(1, false); return(IntPtr.Zero); case Win32.WindowsMessages.MBUTTONDOWN: UpdateMouseState(2, true); return(IntPtr.Zero); case Win32.WindowsMessages.MBUTTONUP: UpdateMouseState(2, false); return(IntPtr.Zero); case Win32.WindowsMessages.CLOSE: Terminate(); return(IntPtr.Zero); case Win32.WindowsMessages.PAINT: { IntPtr hDC; hDC = Win32.BeginPaint(hWnd, out Win32.PAINTSTRUCT ps); Win32.EndPaint(hWnd, ref ps); return(IntPtr.Zero); } case Win32.WindowsMessages.DESTROY: Win32.PostQuitMessage(0); return(IntPtr.Zero); default: return(Win32.DefWindowProc(hWnd, message, wParam, lParam)); } }
public static int SendMessage(IntPtr hWnd, Win32.WindowsMessages Msg, IntPtr wParam, IntPtr lParam) { return(UnsafeNativeMethods.SendMessage(hWnd, (int)Msg, wParam, lParam)); }