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 _______________________________________________ Gtk-sharp-list maillist - Gtk-sharp-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/gtk-sharp-list