- #include <glib.h>
- #include <gtk/gtk.h>
- void example (GtkWidget *mainWindow) {
- GdkEvent *press_event;
- press_event = gdk_event_new (GDK_BUTTON_PRESS);//新建鼠标事件
- press_event->button.button = 1; // 鼠标左键
- press_event->button.window = GTK_WIDGET(mainWindow)->window;//需要接收鼠标事件的控件
- g_object_ref (press_event->button.window);
- //gdk_threads_enter();// 需要init g_thread支持
- gtk_main_do_event (press_event);
- //gdk_threads_leave ();
- // 模拟焦点事件
- GdkEvent *focus_event;
- focus_event = gdk_event_new (GDK_FOCUS_CHANGE);
- focus_event->focus_change.window = GTK_WIDGET(mainWindow)->window;
- focus_event->focus_change.in = TRUE;
- focus_event->focus_change.send_event = TRUE;
- g_object_ref (focus_event->focus_change.window);
- gtk_main_do_event (focus_event);
- }
static void on_apply_theme( GtkWidget *widget,
gpointer data )
{
int i;
GdkEvent *send_event = gdk_event_new (GDK_CLIENT_EVENT);
for (i = 0; i < 5; i++) send_event->client.data.l[i] = 0;
send_event->client.data_format = 32;
send_event->client.message_type=gdk_atom_intern("_GTK_READ_RCFILES", FALSE);;
gdk_screen_broadcast_client_message(gdk_screen_get_default(), send_event);
gdk_event_free (send_event);
}