提交rbac
提交设置右键错位的bug
This commit is contained in:
180
DH.RBAC/Utility/PopupTool/UnsafeMethods.cs
Normal file
180
DH.RBAC/Utility/PopupTool/UnsafeMethods.cs
Normal file
@ -0,0 +1,180 @@
|
||||
#if NETFRAMEWORK || WINDOWS
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
internal class UnsafeMethods
|
||||
{
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr GetWindowDC(IntPtr hWnd);
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int ReleaseDC(IntPtr hwnd, IntPtr hDC);
|
||||
|
||||
[DllImport("user32")]
|
||||
public static extern bool TrackMouseEvent(ref UnsafeMethods.TRACKMOUSEEVENT lpEventTrack);
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern bool SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
|
||||
|
||||
internal static int HIWORD(int n)
|
||||
{
|
||||
return n >> 16 & 65535;
|
||||
}
|
||||
|
||||
internal static int HIWORD(IntPtr n)
|
||||
{
|
||||
return UnsafeMethods.HIWORD((int)((long)n));
|
||||
}
|
||||
|
||||
internal static int LOWORD(int n)
|
||||
{
|
||||
return n & 65535;
|
||||
}
|
||||
|
||||
internal static int LOWORD(IntPtr n)
|
||||
{
|
||||
return UnsafeMethods.LOWORD((int)((long)n));
|
||||
}
|
||||
|
||||
public const int WM_LBUTTONDOWN = 513;
|
||||
|
||||
public const int WM_RBUTTONDOWN = 516;
|
||||
|
||||
public const int WM_MBUTTONDOWN = 519;
|
||||
|
||||
public const int WM_NCLBUTTONDOWN = 161;
|
||||
|
||||
public const int WM_NCRBUTTONDOWN = 164;
|
||||
|
||||
public const int WM_NCMBUTTONDOWN = 167;
|
||||
|
||||
public const int WM_NCCALCSIZE = 131;
|
||||
|
||||
public const int WM_NCHITTEST = 132;
|
||||
|
||||
public const int WM_NCPAINT = 133;
|
||||
|
||||
public const int WM_NCACTIVATE = 134;
|
||||
|
||||
public const int WM_MOUSELEAVE = 675;
|
||||
|
||||
public const int WS_EX_NOACTIVATE = 134217728;
|
||||
|
||||
public const int HTTRANSPARENT = -1;
|
||||
|
||||
public const int HTLEFT = 10;
|
||||
|
||||
public const int HTRIGHT = 11;
|
||||
|
||||
public const int HTTOP = 12;
|
||||
|
||||
public const int HTTOPLEFT = 13;
|
||||
|
||||
public const int HTTOPRIGHT = 14;
|
||||
|
||||
public const int HTBOTTOM = 15;
|
||||
|
||||
public const int HTBOTTOMLEFT = 16;
|
||||
|
||||
public const int HTBOTTOMRIGHT = 17;
|
||||
|
||||
public const int WM_USER = 1024;
|
||||
|
||||
public const int WM_REFLECT = 8192;
|
||||
|
||||
public const int WM_COMMAND = 273;
|
||||
|
||||
public const int CBN_DROPDOWN = 7;
|
||||
|
||||
public const int WM_GETMINMAXINFO = 36;
|
||||
|
||||
public static readonly IntPtr TRUE = new IntPtr(1);
|
||||
|
||||
public static readonly IntPtr FALSE = new IntPtr(0);
|
||||
|
||||
public enum TrackerEventFlags : uint
|
||||
{
|
||||
TME_HOVER = 1U,
|
||||
TME_LEAVE,
|
||||
TME_QUERY = 1073741824U,
|
||||
TME_CANCEL = 2147483648U
|
||||
}
|
||||
internal struct TRACKMOUSEEVENT
|
||||
{
|
||||
public uint cbSize;
|
||||
|
||||
public uint dwFlags;
|
||||
|
||||
public IntPtr hwndTrack;
|
||||
|
||||
public uint dwHoverTime;
|
||||
}
|
||||
|
||||
internal struct MINMAXINFO
|
||||
{
|
||||
public Point reserved;
|
||||
|
||||
public Size maxSize;
|
||||
|
||||
public Point maxPosition;
|
||||
|
||||
public Size minTrackSize;
|
||||
|
||||
public Size maxTrackSize;
|
||||
}
|
||||
|
||||
internal struct RECT
|
||||
{
|
||||
public RECT(int left, int top, int right, int bottom)
|
||||
{
|
||||
this.left = left;
|
||||
this.top = top;
|
||||
this.right = right;
|
||||
this.bottom = bottom;
|
||||
}
|
||||
|
||||
public Rectangle Rect
|
||||
{
|
||||
get
|
||||
{
|
||||
return new Rectangle(this.left, this.top, this.right - this.left, this.bottom - this.top);
|
||||
}
|
||||
}
|
||||
|
||||
public static UnsafeMethods.RECT FromXYWH(int x, int y, int width, int height)
|
||||
{
|
||||
return new UnsafeMethods.RECT(x, y, x + width, y + height);
|
||||
}
|
||||
|
||||
public static UnsafeMethods.RECT FromRectangle(Rectangle rect)
|
||||
{
|
||||
return new UnsafeMethods.RECT(rect.Left, rect.Top, rect.Right, rect.Bottom);
|
||||
}
|
||||
|
||||
public int left;
|
||||
public int top;
|
||||
public int right;
|
||||
public int bottom;
|
||||
}
|
||||
|
||||
internal struct WINDOWPOS
|
||||
{
|
||||
internal IntPtr hwnd;
|
||||
internal IntPtr hWndInsertAfter;
|
||||
internal int x;
|
||||
internal int y;
|
||||
internal int cx;
|
||||
internal int cy;
|
||||
internal uint flags;
|
||||
}
|
||||
|
||||
public struct NCCALCSIZE_PARAMS
|
||||
{
|
||||
public UnsafeMethods.RECT rectProposed;
|
||||
public UnsafeMethods.RECT rectBeforeMove;
|
||||
public UnsafeMethods.RECT rectClientBeforeMove;
|
||||
public UnsafeMethods.WINDOWPOS lpPos;
|
||||
}
|
||||
}
|
||||
#endif
|
Reference in New Issue
Block a user