[Gtk-sharp-list] How to set the fields of properties of Gdk.Event

Matt Guo matt at mattguo.com
Wed Dec 9 02:32:00 EST 2009


Thank you,
I'll try the gtk-sharp trunk.

On Wed, Dec 9, 2009 at 1:53 AM, Christian Hoff <christian_hoff at gmx.net> wrote:
> Matt Guo wrote:
>>
>> I want to send a mouse event to a given window. The C code for this
>> would be like:
>>
>> bool SendMousePress (MouseButton type, x, y) {
>>  GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS);
>>  event->button.button = type == LEFT ? 1 : (type == MIDDLE ? 2 : 3);
>>  event->button.x = x;
>>  event->button.y = y;
>>  ... //other event fields setting
>>  gdk_event_put(event);
>>  gdk_event_free(event);
>> }
>>
>> The problem I have now is that though I can replace "gdk_event_new",
>> "gdk_event_put" and "gdk_event_free" with Gdk.EventHelper.New,
>> Gdk.EventHelper.Put
>> and Gdk.EventHelper.Free, but how can I set the event fields with
>> gdk-sharp? Since all properties in the Gdk.Event class are read-only.
>>
>
> Thanks to Mike, the properties are now read-write in Gtk# trunk. If you want
> to do the same in 2.12, try something like:
>
>       [StructLayout (LayoutKind.Sequential)]
>       struct NativeEventButtonStruct {
>           EventType type;
>           IntPtr window;
>           sbyte send_event;
>           public uint time;
>           public double x;
>           public double y;
>           public IntPtr axes;
>           public uint state;
>           public uint button;
>           public IntPtr device;
>           public double x_root;
>           public double y_root;
>       }
>
>         NativeEventButtonSTruct native_event_button = new
> NativeEventButtonStruct ();
>         native_event_button.x/y = ...;
>         IntPtr struct_ptr =Glib.Marshaller.Malloc (sizeof
> (NativeButtonEventStruct));
>         Marshal.StructureToPtr (strct_ptr, native_event_button);
>         EventButton evnt = new EventButton (struct_ptr);
>
>        Gdk.EventHelper.Put (evnt);
>        Free (evnt);
>
> Hope this helps to get you started,
>
> Christian
>



-- 
B.R.
GUO Rui (Matt)


More information about the Gtk-sharp-list mailing list