gdk模拟鼠标按键事件/焦点事件

http://blog.csdn.net/zhou0/article/details/5502060

 

C代码
  1.  #include <glib.h>   
  2.  #include <gtk/gtk.h>   
  3.   
  4. void  example (GtkWidget  *mainWindow) {  
  5.  GdkEvent *press_event;  
  6.  press_event = gdk_event_new (GDK_BUTTON_PRESS);//新建鼠标事件   
  7.  press_event->button.button = 1; // 鼠标左键   
  8.  press_event->button.window = GTK_WIDGET(mainWindow)->window;//需要接收鼠标事件的控件   
  9.  g_object_ref (press_event->button.window);  
  10.  //gdk_threads_enter();// 需要init g_thread支持   
  11.  gtk_main_do_event (press_event);  
  12.  //gdk_threads_leave ();   
  13.   
  14.   
  15.  // 模拟焦点事件   
  16.  GdkEvent *focus_event;  
  17.  focus_event = gdk_event_new (GDK_FOCUS_CHANGE);  
  18.  focus_event->focus_change.window = GTK_WIDGET(mainWindow)->window;  
  19.  focus_event->focus_change.in = TRUE;  
  20.  focus_event->focus_change.send_event = TRUE;  
  21.  g_object_ref (focus_event->focus_change.window);  
  22.  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);

}

posted @ 2014-11-23 03:12  alxe_yu  阅读(689)  评论(0)    收藏  举报