------ #### ryControlsV4 V3.0.2107.0101 - *.[新增]新增Sheng.Winform.Controls部分控件。 #### RyWeb V3.0.2107.0101 - *.[新增]QuickWeb新增引用页设置。 #### MyDbV4 V3.0.2107.0101 - *.[新增]支持忽略大小写的替换功能。
93 lines
3.5 KiB
C#
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;
|
|
}
|
|
}
|
|
} |