2018-01-20 20:01:01 -05:00
|
|
|
|
using System;
|
|
|
|
|
using System.Runtime.InteropServices;
|
|
|
|
|
|
|
|
|
|
namespace Vanara.PInvoke
|
|
|
|
|
{
|
|
|
|
|
/// <summary>Contains message information from a thread's message queue.</summary>
|
2020-12-25 22:40:00 -05:00
|
|
|
|
// 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")]
|
2018-01-20 20:01:01 -05:00
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
|
|
|
public struct MSG
|
|
|
|
|
{
|
2018-11-19 23:18:50 -05:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// A handle to the window whose window procedure receives the message. This member is NULL when the message is a thread message.
|
|
|
|
|
/// </summary>
|
2018-10-26 14:24:07 -04:00
|
|
|
|
public HWND hwnd;
|
2018-11-19 23:18:50 -05:00
|
|
|
|
|
2018-01-20 20:01:01 -05:00
|
|
|
|
/// <summary>The message identifier. Applications can only use the low word; the high word is reserved by the system.</summary>
|
|
|
|
|
public uint message;
|
2018-11-19 23:18:50 -05:00
|
|
|
|
|
2018-01-20 20:01:01 -05:00
|
|
|
|
/// <summary>Additional information about the message. The exact meaning depends on the value of the message member.</summary>
|
|
|
|
|
public IntPtr wParam;
|
2018-11-19 23:18:50 -05:00
|
|
|
|
|
2018-01-20 20:01:01 -05:00
|
|
|
|
/// <summary>Additional information about the message. The exact meaning depends on the value of the message member.</summary>
|
|
|
|
|
public IntPtr lParam;
|
2018-11-19 23:18:50 -05:00
|
|
|
|
|
2018-01-20 20:01:01 -05:00
|
|
|
|
/// <summary>The time at which the message was posted.</summary>
|
|
|
|
|
public uint time;
|
2018-11-19 23:18:50 -05:00
|
|
|
|
|
2018-01-20 20:01:01 -05:00
|
|
|
|
/// <summary>The horizontal cursor position, in screen coordinates, when the message was posted.</summary>
|
|
|
|
|
public int pt_x;
|
2018-11-19 23:18:50 -05:00
|
|
|
|
|
2018-01-20 20:01:01 -05:00
|
|
|
|
/// <summary>The vertical cursor position, in screen coordinates, when the message was posted.</summary>
|
|
|
|
|
public int pt_y;
|
2020-12-25 22:40:00 -05:00
|
|
|
|
|
|
|
|
|
/// <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;
|
|
|
|
|
}
|
2018-01-20 20:01:01 -05:00
|
|
|
|
}
|
|
|
|
|
}
|