Esempio n. 1
0
        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));
            }
        }
Esempio n. 3
0
 public static int SendMessage(IntPtr hWnd, Win32.WindowsMessages Msg, IntPtr wParam, IntPtr lParam)
 {
     return(UnsafeNativeMethods.SendMessage(hWnd, (int)Msg, wParam, lParam));
 }