예제 #1
0
        protected SurfaceBase(ISurfaceHandler events)
        {
            SurfaceHandler surfaceEvents = new SurfaceHandler
            {
                Draw = (IntPtr surfaceHandler, IntPtr surface, ref uiAreaDrawParams args) =>
                {
                    ControlSafeHandle surfaceHandle = new ControlSafeHandle(surface);
                    SurfaceBase       realSurface   = Surfaces[surfaceHandle];
                    DrawEventArgs     a             = (DrawEventArgs)args;
                    events.Draw(realSurface, ref a);
                },
                MouseEvent = (IntPtr surfaceHandler, IntPtr surface, ref uiAreaMouseEvent args) =>
                {
                    ControlSafeHandle surfaceHandle = new ControlSafeHandle(surface);
                    SurfaceBase       realSurface   = Surfaces[surfaceHandle];
                    MouseEventArgs    a             = (MouseEventArgs)args;
                    events.MouseEvent(realSurface, ref a);
                },
                MouseCrossed = (surfaceHandler, surface, left) =>
                {
                    ControlSafeHandle     surfaceHandle = new ControlSafeHandle(surface);
                    SurfaceBase           realSurface   = Surfaces[surfaceHandle];
                    MouseCrossedEventArgs a             = new MouseCrossedEventArgs(left);
                    events.MouseCrossed(realSurface, a);
                },
                DragBroken = (surfaceHandler, surface) =>
                {
                    ControlSafeHandle surfaceHandle = new ControlSafeHandle(surface);
                    SurfaceBase       realSurface   = Surfaces[surfaceHandle];
                    events.DragBroken(realSurface);
                },
                KeyEvent = (IntPtr surfaceHandler, IntPtr surface, ref uiAreaKeyEvent args) =>
                {
                    ControlSafeHandle surfaceHandle = new ControlSafeHandle(surface);
                    SurfaceBase       realSurface   = Surfaces[surfaceHandle];
                    KeyEventArgs      a             = (KeyEventArgs)args;
                    return(events.KeyEvent(realSurface, ref a));
                }
            };

            EventHandler = new uiAreaHandler
            {
                DragBroken   = Marshal.GetFunctionPointerForDelegate(surfaceEvents.DragBroken),
                Draw         = Marshal.GetFunctionPointerForDelegate(surfaceEvents.Draw),
                KeyEvent     = Marshal.GetFunctionPointerForDelegate(surfaceEvents.KeyEvent),
                MouseCrossed = Marshal.GetFunctionPointerForDelegate(surfaceEvents.MouseCrossed),
                MouseEvent   = Marshal.GetFunctionPointerForDelegate(surfaceEvents.MouseEvent)
            };
        }
예제 #2
0
 public static IntPtr uiNewScrollingArea(uiAreaHandler ah, int width, int height) => FunctionLoader.LoadLibuiFunc <uiNewScrollingArea_t>("uiNewScrollingArea")(ah, width, height);
예제 #3
0
 public static IntPtr uiNewArea(uiAreaHandler ah) => FunctionLoader.LoadLibuiFunc <uiNewArea_t>("uiNewArea")(ah);