Vanara/PInvoke/Shared/WinUser/MSG.cs

57 lines
2.7 KiB
C#

using System;
using System.Runtime.InteropServices;
namespace Vanara.PInvoke
{
/// <summary>Contains message information from a thread's message queue.</summary>
// https://docs.microsoft.com/en-us/windows/win32/api/winuser/ns-winuser-msg typedef struct tagMSG { HWND hwnd; UINT message; WPARAM
// wParam; LPARAM lParam; DWORD time; POINT pt; DWORD lPrivate; } MSG, *PMSG, *NPMSG, *LPMSG;
[PInvokeData("winuser.h", MSDNShortId = "NS:winuser.tagMSG")]
[StructLayout(LayoutKind.Sequential)]
public struct MSG
{
/// <summary>
/// A handle to the window whose window procedure receives the message. This member is NULL when the message is a thread message.
/// </summary>
public HWND hwnd;
/// <summary>The message identifier. Applications can only use the low word; the high word is reserved by the system.</summary>
public uint message;
/// <summary>Additional information about the message. The exact meaning depends on the value of the message member.</summary>
public IntPtr wParam;
/// <summary>Additional information about the message. The exact meaning depends on the value of the message member.</summary>
public IntPtr lParam;
/// <summary>The time at which the message was posted.</summary>
public uint time;
/// <summary>The horizontal cursor position, in screen coordinates, when the message was posted.</summary>
public int pt_x;
/// <summary>The vertical cursor position, in screen coordinates, when the message was posted.</summary>
public int pt_y;
/// <summary>Initializes a new instance of the <see cref="MSG"/> struct.</summary>
/// <param name="hwnd">
/// A handle to the window whose window procedure receives the message. This member is NULL when the message is a thread message.
/// </param>
/// <param name="msg">The message identifier. Applications can only use the low word; the high word is reserved by the system.</param>
/// <param name="wParam">Additional information about the message. The exact meaning depends on the value of the message member.</param>
/// <param name="lParam">Additional information about the message. The exact meaning depends on the value of the message member.</param>
/// <param name="pt_x">The horizontal cursor position, in screen coordinates, when the message was posted.</param>
/// <param name="pt_y">The vertical cursor position, in screen coordinates, when the message was posted.</param>
/// <param name="time">The time at which the message was posted.</param>
public MSG(HWND hwnd, uint msg, IntPtr wParam, IntPtr lParam, int pt_x = default, int pt_y = default, uint time = default)
{
this.hwnd = hwnd;
this.message = msg;
this.wParam = wParam;
this.lParam = lParam;
this.time = time;
this.pt_x = pt_x;
this.pt_y = pt_y;
}
}
}