using System;
using System.Drawing;
using System.Runtime.InteropServices;
namespace Aga.Controls.Tree{
internal static class NativeMethods
{
public const int DCX_WINDOW = 0x01;
public const int DCX_CACHE = 0x02;
public const int DCX_NORESETATTRS = 0x04;
public const int DCX_CLIPCHILDREN = 0x08;
public const int DCX_CLIPSIBLINGS = 0x10;
public const int DCX_PARENTCLIP = 0x20;
public const int DCX_EXCLUDERGN = 0x40;
public const int DCX_INTERSECTRGN = 0x80;
public const int DCX_EXCLUDEUPDATE = 0x100;
public const int DCX_INTERSECTUPDATE = 0x200;
public const int DCX_LOCKWINDOWUPDATE = 0x400;
public const int DCX_VALIDATE = 0x200000;
public const int WM_THEMECHANGED = 0x031A;
public const int WM_NCPAINT = 0x85;
public const int WM_NCCALCSIZE = 0x83;
public const int WS_BORDER = 0x800000;
public const int WS_EX_CLIENTEDGE = 0x200;
public const int WVR_HREDRAW = 0x100;
public const int WVR_VREDRAW = 0x200;
public const int WVR_REDRAW = (WVR_HREDRAW | WVR_VREDRAW);
[StructLayout(LayoutKind.Sequential)]
public struct NCCALCSIZE_PARAMS
{
public RECT rgrc0, rgrc1, rgrc2;
public IntPtr lppos;
}
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
public static RECT FromRectangle(Rectangle rectangle)
{
RECT result = new RECT();
result.Left = rectangle.Left;
result.Top = rectangle.Top;
result.Right = rectangle.Right;
result.Bottom = rectangle.Bottom;
return result;
}
public Rectangle ToRectangle()
{
return new Rectangle(Left, Top, Right - Left, Bottom - Top);
}
}
[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr GetDCEx(IntPtr hWnd, IntPtr hrgnClip, int flags);
[DllImport("user32.dll")]
public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
}
}
|