现在的位置: 首页 > 综合 > 正文

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

2017年12月20日 ⁄ 综合 ⁄ 共 1208字 ⁄ 字号 评论关闭
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);


}

【上篇】
【下篇】

抱歉!评论已关闭.