Thank you, I'll try the gtk-sharp trunk. On Wed, Dec 9, 2009 at 1:53 AM, Christian Hoff <christian_h...@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) _______________________________________________ Gtk-sharp-list maillist - Gtk-sharp-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/gtk-sharp-list