mirror of https://github.com/dahall/Vanara.git
Added TrackMouseEvent and supporting elements
parent
1ab1a3bec7
commit
5f20b82424
|
@ -0,0 +1,78 @@
|
|||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
// ReSharper disable FieldCanBeMadeReadOnly.Global ReSharper disable InconsistentNaming
|
||||
|
||||
namespace Vanara.PInvoke
|
||||
{
|
||||
public static partial class User32
|
||||
{
|
||||
/// <summary>The services requested in a <see cref="TRACKMOUSEEVENT"/> structure.</summary>
|
||||
[Flags]
|
||||
public enum TME : uint
|
||||
{
|
||||
/// <summary>
|
||||
/// The caller wants to cancel a prior tracking request. The caller should also specify the type of tracking that it wants to cancel. For example, to
|
||||
/// cancel hover tracking, the caller must pass the TME_CANCEL and TME_HOVER flags.
|
||||
/// </summary>
|
||||
TME_CANCEL = 0x80000000,
|
||||
/// <summary>
|
||||
/// The caller wants hover notification. Notification is delivered as a WM_MOUSEHOVER message.
|
||||
/// <para>If the caller requests hover tracking while hover tracking is already active, the hover timer will be reset.</para>
|
||||
/// <para>This flag is ignored if the mouse pointer is not over the specified window or area.</para>
|
||||
/// </summary>
|
||||
TME_HOVER = 0x00000001,
|
||||
/// <summary>
|
||||
/// The caller wants leave notification. Notification is delivered as a WM_MOUSELEAVE message. If the mouse is not over the specified window or area,
|
||||
/// a leave notification is generated immediately and no further tracking is performed.
|
||||
/// </summary>
|
||||
TME_LEAVE = 0x00000002,
|
||||
/// <summary>
|
||||
/// The caller wants hover and leave notification for the nonclient areas. Notification is delivered as WM_NCMOUSEHOVER and WM_NCMOUSELEAVE messages.
|
||||
/// </summary>
|
||||
TME_NONCLIENT = 0x00000010,
|
||||
/// <summary>
|
||||
/// The function fills in the structure instead of treating it as a tracking request. The structure is filled such that had that structure been
|
||||
/// passed to TrackMouseEvent, it would generate the current tracking. The only anomaly is that the hover time-out returned is always the actual
|
||||
/// time-out and not HOVER_DEFAULT, if HOVER_DEFAULT was specified during the original TrackMouseEvent request.
|
||||
/// </summary>
|
||||
TME_QUERY = 0x40000000,
|
||||
}
|
||||
|
||||
/// <summary>Posts messages when the mouse pointer leaves a window or hovers over a window for a specified amount of time.</summary>
|
||||
/// <param name="lpEventTrack">
|
||||
/// <para>Type: <c>LPTRACKMOUSEEVENT</c></para>
|
||||
/// <para>A pointer to a <c>TRACKMOUSEEVENT</c> structure that contains tracking information.</para>
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// <para>Type: <c>BOOL</c></para>
|
||||
/// <para>If the function succeeds, the return value is nonzero .</para>
|
||||
/// <para>If the function fails, return value is zero. To get extended error information, call <c>GetLastError</c>.</para>
|
||||
/// </returns>
|
||||
// BOOL WINAPI TrackMouseEvent( _Inout_ LPTRACKMOUSEEVENT lpEventTrack); https://msdn.microsoft.com/en-us/library/windows/desktop/ms646265(v=vs.85).aspx
|
||||
[DllImport(Lib.User32, SetLastError = true, ExactSpelling = true)]
|
||||
[PInvokeData("Winuser.h", MSDNShortId = "ms646265")]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool TrackMouseEvent(ref TRACKMOUSEEVENT lpEventTrack);
|
||||
|
||||
/// <summary>
|
||||
/// Used by the TrackMouseEvent function to track when the mouse pointer leaves a window or hovers over a window for a specified amount of time.
|
||||
/// </summary>
|
||||
[PInvokeData("Winuser.h", MSDNShortId = "ms645604")]
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct TRACKMOUSEEVENT
|
||||
{
|
||||
/// <summary>The size of the TRACKMOUSEEVENT structure, in bytes.</summary>
|
||||
public uint cbSize;
|
||||
/// <summary>The services requested</summary>
|
||||
public TME dwFlags;
|
||||
/// <summary>A handle to the window to track.</summary>
|
||||
public IntPtr hwndTrack;
|
||||
/// <summary>
|
||||
/// The hover time-out (if TME_HOVER was specified in dwFlags), in milliseconds. Can be HOVER_DEFAULT, which means to use the system default hover time-out.
|
||||
/// </summary>
|
||||
public uint dwHoverTime;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue