public static class Win32Helper { ///Window messages private enum WindowMessage : uint { // Keyboard messages KeyboardFirst = 0x0100, KeyboardLast = 0x0108, // Mouse messages //MouseMove = 0x0200, MouseFirst = 0x0201, // Skip mouse move, it happens //a lot and there is another message for that MouseLast = 0x020d, } public static void DiscardMousebMessages(IntPtr hWnd) { Message msg; while (PeekMessage(out msg, hWnd, (uint)WindowMessage.MouseFirst, (uint)WindowMessage.MouseLast, (uint)PeekMessageFlags.PM_REMOVE)) ; } public static void DiscardKeyboardMessages(IntPtr hWnd) { Message msg; while (PeekMessage(out msg, hWnd, (uint)WindowMessage.KeyboardFirst, (uint)WindowMessage.KeyboardLast, (uint)PeekMessageFlags.PM_REMOVE)) ; } [StructLayout(LayoutKind.Sequential)] private struct Message { public IntPtr hWnd; public WindowMessage msg; public IntPtr wParam; public IntPtr lParam; public uint time; public System.Drawing.Point p; } [System.Security.SuppressUnmanagedCodeSecurity] [DllImport("User32.dll", CharSet = CharSet.Auto)] private static extern bool PeekMessage( out Message msg, IntPtr hWnd, uint messageFilterMin, uint messageFilterMax, uint flags); }
April 13, 2007
Discarding Pending Mouse Or Keyboard Messages in C#
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment