152 lines
5.2 KiB
C#
152 lines
5.2 KiB
C#
|
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);
|
||
|
}
|
||
|
}
|
||
|
}
|