RaUI/Source/ryControls/Sheng.Winform.Controls/PopupControl/NativeMethods.cs
鑫Intel 8b41f58f5c ### 2021-07-01更新
------
#### ryControlsV4    V3.0.2107.0101
- *.[新增]新增Sheng.Winform.Controls部分控件。

#### RyWeb    V3.0.2107.0101
- *.[新增]QuickWeb新增引用页设置。
#### MyDbV4    V3.0.2107.0101
- *.[新增]支持忽略大小写的替换功能。
2021-07-04 09:41:31 +08:00

93 lines
3.5 KiB
C#

using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Security;
using System.Security.Permissions;
namespace Sheng.Winform.Controls.PopupControl
{
internal static class NativeMethods
{
internal const int WM_NCHITTEST = 0x0084,
WM_NCACTIVATE = 0x0086,
WS_EX_NOACTIVATE = 0x08000000,
HTTRANSPARENT = -1,
HTLEFT = 10,
HTRIGHT = 11,
HTTOP = 12,
HTTOPLEFT = 13,
HTTOPRIGHT = 14,
HTBOTTOM = 15,
HTBOTTOMLEFT = 16,
HTBOTTOMRIGHT = 17,
WM_PRINT = 0x0317,
WM_USER = 0x0400,
WM_REFLECT = WM_USER + 0x1C00,
WM_COMMAND = 0x0111,
CBN_DROPDOWN = 7,
WM_GETMINMAXINFO = 0x0024;
[Flags]
internal enum AnimationFlags : int
{
Roll = 0x0000, // Uses a roll animation.
HorizontalPositive = 0x00001, // Animates the window from left to right. This flag can be used with roll or slide animation.
HorizontalNegative = 0x00002, // Animates the window from right to left. This flag can be used with roll or slide animation.
VerticalPositive = 0x00004, // Animates the window from top to bottom. This flag can be used with roll or slide animation.
VerticalNegative = 0x00008, // Animates the window from bottom to top. This flag can be used with roll or slide animation.
Center = 0x00010, // Makes the window appear to collapse inward if <c>Hide</c> is used or expand outward if the <c>Hide</c> is not used.
Hide = 0x10000, // Hides the window. By default, the window is shown.
Activate = 0x20000, // Activates the window.
Slide = 0x40000, // Uses a slide animation. By default, roll animation is used.
Blend = 0x80000, // Uses a fade effect. This flag can be used only with a top-level window.
Mask = 0xfffff,
}
[SuppressUnmanagedCodeSecurity]
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int AnimateWindow(HandleRef windowHandle, int time, AnimationFlags flags);
internal static void AnimateWindow(Control control, int time, AnimationFlags flags)
{
try
{
SecurityPermission sp = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode);
sp.Demand();
AnimateWindow(new HandleRef(control, control.Handle), time, flags);
}
catch (SecurityException) { }
}
internal static int HIWORD(int n)
{
return (n >> 16) & 0xffff;
}
internal static int HIWORD(IntPtr n)
{
return HIWORD(unchecked((int)(long)n));
}
internal static int LOWORD(int n)
{
return n & 0xffff;
}
internal static int LOWORD(IntPtr n)
{
return LOWORD(unchecked((int)(long)n));
}
[StructLayout(LayoutKind.Sequential)]
internal struct MINMAXINFO
{
public Point reserved;
public Size maxSize;
public Point maxPosition;
public Size minTrackSize;
public Size maxTrackSize;
}
}
}