var w, h int //保存窗口的宽度和高度 //改变窗口大小时,触发"configure-event",然后手动刷新绘图区域,否则图片会重叠 window.Connect("configure-event", func() { window.QueueDraw() //刷新绘图区域 //获取窗口的宽度和高度 window.GetSize(&w, &h) fmt.Println(w, h) }) x := 0 //画笑脸起点 ...
2. 某些情况下,一些消息可以通用比如点击事件 "clicked"和"button_release_event", 但是要注意的是,这个回调函数的参数个数是不一样,一旦混淆,程序就会报错退出; 3. configure_event 和 expose_event是两个非常特殊的事件。当某个widget关联了configure_event信号,那么当它被show出来时,该事件就会被响应;后者的响应...
事件类型GDK_CONFIGURE包含了所有的大小、位置和用于存储事件次序的栈结构。 g_signal_connect(G_OBJECT(window), "configure-event", G_CALLBACK(frame_callback), NULL); 从上面可以看出,信号“configure-event“被发射了 ,则所绑定构件的大小、位置与次序栈都被捕获了。 void frame_callback(GtkWindow *window...
button_release_event按钮释放 motion_notify_event鼠标移动 delete_event使用窗口管理器关闭 destroy_event关闭 expose_event曝光 key_press_event按键按下 key_release_event按键释放 enter_notify_event鼠标指针进入组件 leave_notify_event鼠标指针离开组件 configure_event属性改变 focus_in_event获得聚焦 focus_out_event...
gboolean on_window_configure_event(GtkWidget * da, GdkEventConfigure * event, gpointer user_data){ static int oldw = 0; static int oldh = 0; //make our selves a properly sized pixmap if our window has been resized if (oldw != event->width || oldh != event->height){ ...
GdkEventConfigure *event) { GtkWindow *window = GTK_WINDOW (widget); gboolean expected_reply = window->configure_request_count > 0; if (window->configure_request_count > 0) { window->configure_request_count -= 1; gdk_window_thaw_toplevel_updates_libgtk_only (widget->window); } if (!
我们为这个信号所绑定的回调函数gtk_main_quit() 将执⾏,他的功能是终⽌整个应⽤程序。移动窗⼝(Moving window)在下⼀个例⼦中,我们将展⽰是如何对“移动窗⼝”这个事件做出反应的。#include <gtk/gtk.h> void frame_callback(GtkWindow *window,GdkEvent *event, gpointer data){ ...
event_box.connect ("map_event", self.Map) self.event_box.connect ("unmap_event", self.unMap) self.event_box.connect ("configure_event", self.Configure) self.event_box.connect ("expose_event", self.Expose) self.event_box.connect ("visibility_notify_event", self.Visibility) self.event_...
gtk_signal_connect(GTK_OBJECT(drawing_area),"configure_event", (GtkSignalFunc)configure_event,NULL); 回调函数: staticgintconfigure_event(GtkWidget*widget,GdkEventConfigure*event) { /*---Freebackgroundifwecreatedit---*/ booleansecond=FALSE; if(pixmap) { gdk_pixmap_unref(pixmap); second=TRUE;...
另外有一个问题就是画图一定要在gtk_widget_show_all(window);之后,在之前是画不出来的,具体原理还不是很清楚,猜想可能是configure_event事件需要在gtk_widget_show_all(window)之后触发,没有初始化是画不了图的。 cairo_surface_t*surface=NULL;staticgint draw_cb(GtkWidget*widget,cairo_t*cr,gpointer data)...