|
//***************************************************************************
// HOW TO USE THIS FILE
//
// If you need access to a Win32 API that is not exposed, simply uncomment
// it in one of the following files:
//
// NativeMethods.cs
// UnsafeNativeMethods.cs
// SafeNativeMethods.cs
//
// Only uncomment what you need to avoid code bloat.
//
// DO NOT adjust the visibility of anything in these files. They are marked
// internal on pupose.
//***************************************************************************
using System;
using System.Runtime.InteropServices;
namespace MS.Win32
{
internal static class NativeMethods
{
public const int MAX_PATH = 260;
// Dialog Codes
internal const int WM_GETDLGCODE = 0x0087;
internal const int DLGC_STATIC = 0x0100;
[StructLayout(LayoutKind.Sequential)]
public struct HWND
{
public IntPtr h;
public static HWND Cast(IntPtr h)
{
HWND hTemp = new HWND();
hTemp.h = h;
return hTemp;
}
public static implicit operator IntPtr(HWND h)
{
return h.h;
}
public static HWND NULL
{
get
{
HWND hTemp = new HWND();
hTemp.h = IntPtr.Zero;
return hTemp;
}
}
public static bool operator==(HWND hl, HWND hr)
{
return hl.h == hr.h;
}
public static bool operator!=(HWND hl, HWND hr)
{
return hl.h != hr.h;
}
override public bool Equals(object oCompare)
{
HWND hr = Cast((HWND)oCompare);
return h == hr.h;
}
public override int GetHashCode()
{
return (int) h;
}
}
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
public RECT(int left, int top, int right, int bottom)
{
this.left = left;
this.top = top;
this.right = right;
this.bottom = bottom;
}
public bool IsEmpty
{
get
{
return left >= right || top >= bottom;
}
}
}
[StructLayout(LayoutKind.Sequential)]
public struct POINT
{
public int x;
public int y;
public POINT(int x, int y)
{
this.x = x;
this.y = y;
}
}
// WinEvent specific consts and delegates
public const int EVENT_MIN = 0;
public const int EVENT_MAX = 0x7FFFFFFF;
public const int EVENT_SYSTEM_MENUSTART = 0x0004;
public const int EVENT_SYSTEM_MENUEND = 0x0005;
public const int EVENT_SYSTEM_MENUPOPUPSTART = 0x0006;
public const int EVENT_SYSTEM_MENUPOPUPEND = 0x0007;
public const int EVENT_SYSTEM_CAPTURESTART = 0x0008;
public const int EVENT_SYSTEM_CAPTUREEND = 0x0009;
public const int EVENT_SYSTEM_SWITCHSTART = 0x0014;
public const int EVENT_SYSTEM_SWITCHEND = 0x0015;
public const int EVENT_OBJECT_CREATE = 0x8000;
public const int EVENT_OBJECT_DESTROY = 0x8001;
public const int EVENT_OBJECT_SHOW = 0x8002;
public const int EVENT_OBJECT_HIDE = 0x8003;
public const int EVENT_OBJECT_FOCUS = 0x8005;
public const int EVENT_OBJECT_STATECHANGE = 0x800A;
public const int EVENT_OBJECT_LOCATIONCHANGE = 0x800B;
public const int WINEVENT_OUTOFCONTEXT = 0x0000;
public const int WINEVENT_SKIPOWNTHREAD = 0x0001;
public const int WINEVENT_SKIPOWNPROCESS = 0x0002;
public const int WINEVENT_INCONTEXT = 0x0004;
// WinEvent fired when new Avalon UI is created
public const int EventObjectUIFragmentCreate = 0x6FFFFFFF;
// the delegate passed to USER for receiving a WinEvent
public delegate void WinEventProcDef(int winEventHook, int eventId, IntPtr hwnd, int idObject, int idChild, int eventThread, uint eventTime);
}
}
|