属性改变事件产生的信号:configure_event 其回调函数的定义如下: gboolean callback( GtkWidget *widget, GdkEventConfigure *event, gpointer data ) { event:属性事件结构体变量,系统内部的变量,不是用户传参的 event->x,event->y:窗口的起点坐标 event->width,event->height:窗口的大小 } 以下例子为拉伸或移动...
var w, h int //保存窗口的宽度和高度 //改变窗口大小时,触发"configure-event",然后手动刷新绘图区域,否则图片会重叠 window.Connect("configure-event", func() { window.QueueDraw() //刷新绘图区域 //获取窗口的宽度和高度 window.GetSize(&w, &h) fmt.Println(w, h) }) x := 0 //画笑脸起点 ...
把事件类型GDK_CONFIGURE填加到这个函数中。事件类型GDK_CONFIGURE包含了所有的大小、位置和用于存储事件次序的栈结构。 g_signal_connect(G_OBJECT(window), "configure-event", G_CALLBACK(frame_callback), NULL); 从上面可以看出,信号“configure-event“被发射了 ,则所绑定构件的大小、位置与次序栈都被捕获了...
把事件类型GDK_CONFIGURE填加到这个函数中。事件类型GDK_CONFIGURE包含了所有的大小、位置和用于存储事件次序的栈结构。 g_signal_connect(G_OBJECT(window), "configure-event", G_CALLBACK(frame_callback), NULL); 从上面可以看出,信号“configure-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 (!
leave_notify_event鼠标指针离开组件 configure_event属性改变 focus_in_event获得聚焦 focus_out_event失去聚焦 map_event映射 unmap_event消失 property_notify_even属性改变 selection_clear_event选择清除 selection_request_event选择请求 selection_notify_event选择通知 ...
另外有一个问题就是画图一定要在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)...
#include<gtk/gtk.h>#include<unistd.h>#include<pthread.h>#include<signal.h>//the global pixmap that will serve as our bufferstaticGdkPixmap*pixmap=NULL;gbooleanon_window_configure_event(GtkWidget*da,GdkEventConfigure*event,gpointeruser_data){staticintoldw=0;staticintoldh=0;//make our selves a...
/* We've handled the configure event, no need for further processing. */ return TRUE; } /* Redraw the screen from the surface. Note that the ::draw * signal receives a ready-to-be-used cairo_t that is already * clipped to only draw the exposed areas of the widget ...