从gtk_main_do_event函数中,通过调用内部函数(如:gtk_widget_event_internal)将GDK事件关联到Gtk自身定义的信号上,并将信号发出,绑定这一信号的控件便可以接收到,这样根据信号的定义执行相应的回调函数。 二、以对GtkButton控件的点击事件(press-release-click)为例,进行分析: 当鼠标点击在GtkButton上时,系统做出了...
1.初始化时,GDK向mainloop注册一个事件源(gdkevents-x11.c:gdk_events_init),让mainloop挂到X Window的socket上。 2.GTK调用GDK的gdk_event_handler_set函数设置事件处理函数(gtkmain.c: do_pre_parse_initialization)gtk_main_do_event。 3.当有X Window事件过来时,mainloop调用事件源的事件分发函数gdk_event_...
进一步分析知道,_gdk_event_func这一函数指针做为一个GDK提供给外部的一个接口,外部程序如果实现这一接口,便可以接收来自GDK层转换XServer端产生的事件,在对Gtk的分析过程中,该接口是由Gtk来实现(gtk_main_do_event),也就是Gtk程序通过这一函数来处理事件。 当程序在调用gtk_init时对_gdk_event_func进行设置。
2.GTK调用GDK的gdk_event_handler_set函数设置事件处理函数(gtkmain.c: do_pre_parse_initialization)gtk_main_do_event。 3.当有X Window事件过来时,mainloop调用事件源的事件分发函数gdk_event_dispatch。 4.gdk_event_dispatch中调用gdk_event_translate把Xevent转换成GdkEvent,并放到Gdk的消息队列中。 5.gdk_e...
} // Handle configure event for the canvas gboolean canvas_configure_event(GtkWidget *widget, GdkEventConfigure *event, gpointer data) { GameOfLife *game = (GameOfLife *)data; game->is_canvas_realized = TRUE; return TRUE; } int main(int argc, char *argv[]) { gtk_init(&argc, &argv...
GdkEvent *event, GtkWidget *widget) { gtk_main_do_event(event); returnTRUE; } staticvoid gtk_tooltip_window_realize(GtkWidget *widget) { GtkTooltipWindow *window =GTK_TOOLTIP_WINDOW(widget); GdkSurface *parent; parent =gtk_native_get_surface(gtk_widget_get_native(window->relative_to)); ...
G_CALLBACK (gtk_main_quit),NULL); g_signal_connect (window,"map-event", G_CALLBACK (on_map_event),NULL); on_frame (0.); screen = gtk_widget_get_screen (window); gdk_screen_get_monitor_geometry (screen, gdk_screen_get_primary_monitor (screen), ...
int main (int argc, char *argv[]) { GtkWidget *window; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_show (window); gtk_main (); return 0; } 所有程式理所当然一定会包含gtk/gtk.h, 其中宣告了所有变数, 函数, 及资料及结构. 这些东西您会在您...
(); gdk_event_handler_set ((GdkEventFunc)gtk_main_do_event, NULL, NULL); #ifdef G_ENABLE_DEBUG env_string = g_getenv ("GTK_DEBUG"); if (env_string != NULL) { debug_flags[0].flags = g_parse_debug_string (env_string, gtk_debug_keys, G_N_ELEMENTS (gtk_debug_keys)...
gtk_main();return0; } 开发者ID:gnanasekarvelu,项目名称:miscellaneous,代码行数:39,代码来源:ex0601.c 示例10: gtk_window_set_title ▲点赞 1▼ char*get_input_string(constchar*msg){ GtkWidget *entry; GtkWidget *dialog; dialog=gtk_dialog_new(); ...