|
|
namespace DUser { using System; using System.Runtime.InteropServices;
public class HGadget { public int hgad;
public HGadget(int hwnd) { int hgad = CreateGadget(hwnd, gcHwndHost, new GADGETPROC(this.RawGadgetProc), 0); if (hgad != 0) { this.hgad = hgad; } else { uint error = Common.GetLastError(); throw new System.SystemException("Unable to create new HGadget"); } }
public HGadget(HGadget gadParent) { int hgad = CreateGadget(gadParent.hgad, gcSimple, new GADGETPROC(this.RawGadgetProc), 0); if (hgad != 0) { this.hgad = hgad; } else { uint error = Common.GetLastError(); throw new System.SystemException("Unable to create new HGadget"); } }
public static uint gprFailed = 0xFFFFFFFF; public static uint gprNotHandled = 0; public static uint gprComplete = 1; public static uint gprPartial = 2;
public delegate uint GADGETPROC(int hgadCur, int pvCur, Common.EventMsg pmsg);
public static uint gcHwndHost = 0x00000001; public static uint gcSimple = 0x00000005;
[dllimport("duser.dll", EntryPoint="CreateGadget", SetLastError=true)] public static extern int CreateGadget(int hParent, uint nFlags, GADGETPROC pfn, int pvData);
[dllimport("user32.dll")] public static extern int MessageBox(int h, string m, string c, int type);
public virtual uint GadgetProc(Common.EventMsg pmsg) { /* switch (pmsg.nMsg) { case Common.gmInput: MessageBox(0, "gmInput", "Gadget::GadgetProc()", 0); break;
case Common.gmChangeState: MessageBox(0, "gmChangeState", "Gadget::GadgetProc()", 0); break; } */ return gprNotHandled; }
[dllimport("kernel32.dll", EntryPoint="OutputDebugString")] public static extern void OutputDebugString(string s);
private uint RawGadgetProc(int hgadCur, int pvCur, Common.EventMsg pmsg) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("hgad: "); sb.Append(pmsg.hgadMsg); sb.Append(" MSG: "); sb.Append(pmsg.nMsg); sb.Append('\n'); OutputDebugString(sb.ToString());
return this.GadgetProc(pmsg); }
public static uint gmfiPaint = 0x00000001; public static uint gmfiInputKeyboard = 0x00000002; public static uint gmfiInputMouse = 0x00000004; public static uint gmfiInputMouseMove = 0x00000008; public static uint gmfiChangeState = 0x00000010; public static uint gmfiChangeRect = 0x00000020; public static uint gmfiChangeStyle = 0x00000040; public static uint gmfiAll = 0xFFFFFFFF;
[dllimport("duser.dll", EntryPoint="SetGadgetMessageFilter")] public static extern bool SetGadgetMessageFilter(int hgadChange, int pvCookie, uint nNewFilter, uint nMask);
public void SetMessageFilter(uint nNewFilter, uint nMask) { SetGadgetMessageFilter(this.hgad, 0, nNewFilter, nMask); }
public const uint gsRelative = 0x00000001; public const uint gsVisible = 0x00000002; public const uint gsEnabled = 0x00000004; public const uint gsBuffered = 0x00000008; public const uint gsAllowSubClass = 0x00000010; public const uint gsKeyboardFocus = 0x00000020; public const uint gsMouseFocus = 0x00000040; public const uint gsClipInside = 0x00000080; public const uint gsClipSiblings = 0x00000100; public const uint gsHRedraw = 0x00000200; public const uint gsVRedraw = 0x00000400; public const uint gsOpaque = 0x00000800; public const uint gsZeroOrigin = 0x00001000; public const uint gsCustomHitTest = 0x00002000; public const uint gsAdaptor = 0x00004000; public const uint gsCached = 0x00008000;
[dllimport("duser.dll", EntryPoint="SetGadgetStyle")] public static extern bool SetGadgetStyle(int hgadChange, uint nNewStyle, uint nMask);
public bool SetStyle(uint nNewStyle, uint nMask) { return SetGadgetStyle(this.hgad, nNewStyle, nMask); }
[dllimport("duser.dll", EntryPoint="SetGadgetFillI")] public static extern bool SetGadgetFill(int hgadChange, int hbr, byte bAlpha, int w, int h);
public bool SetFill(int hbr) { return SetGadgetFill(this.hgad, hbr, 255, 0, 0); }
public const uint sgrMove = 0x00000001; public const uint sgrSize = 0x00000002; public const uint sgrClient = 0x00000004; public const uint sgrParent = 0x00000008; [dllimport("duser.dll", EntryPoint="SetGadgetRect", SetLastError=true)] public static extern bool SetGadgetRect(int hgadChange, int x, int y, int w, int h, uint nFlags);
public bool SetRect(int x, int y, int w, int h, uint nFlags) { return SetGadgetRect(this.hgad, x, y, w, h, nFlags); } } }
|