File: Interop\User32\WMExtensions.cs
Web Access
Project: src\src\System.Windows.Forms.Primitives\src\System.Windows.Forms.Primitives.csproj (System.Windows.Forms.Primitives)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Windows.Forms;
 
internal static class WMExtensions
{
    public static bool IsMouseMessage(this ref Message message)
        => message.IsBetween(PInvoke.WM_MOUSEFIRST, PInvoke.WM_MOUSELAST);
 
    public static bool IsMouseMessage(this ref MSG message)
        => message.IsBetween(PInvoke.WM_MOUSEFIRST, PInvoke.WM_MOUSELAST);
 
    public static bool IsKeyMessage(this ref Message message)
        => message.IsBetween(PInvoke.WM_KEYFIRST, PInvoke.WM_KEYLAST);
 
    public static bool IsKeyMessage(this ref MSG message)
        => message.IsBetween(PInvoke.WM_KEYFIRST, PInvoke.WM_KEYLAST);
 
    /// <summary>
    /// Returns true if the message is between <paramref name="firstMessage"/> and
    /// <paramref name="secondMessage"/>, inclusive.
    /// </summary>
    public static bool IsBetween(
        this ref Message message,
        MessageId firstMessage,
        MessageId secondMessage)
        => message.Msg >= (int)firstMessage && message.Msg <= (int)secondMessage;
 
    /// <summary>
    /// Returns true if the message is between <paramref name="firstMessage"/> and
    /// <paramref name="secondMessage"/>, inclusive.
    /// </summary>
    public static bool IsBetween(
        this ref MSG message,
        MessageId firstMessage,
        MessageId secondMessage)
        => message.message >= (uint)firstMessage && message.message <= (uint)secondMessage;
}