destroy 和 delete-event

收到destroy信号后,GtkWidget会被销毁,但是gtk_main()循环还在继续,还需要调用gtk_main_quit()来结束循环。 destroy信号可以连接自定义的回调函数处理别的事情,但是不管怎么样,收到destroy信号以后,widget都会被销毁。 举个例子: #include void destroy(GtkObject *window, gpointer user_data) { g_print(“OH no no ~\n”); } int main(int…

gtk中某个信号对应的回调函数原型

对于gtk中不同信号,对应的回调函数原型是不同的。举例说明如何找到相应信号的回调函数原型: g_signal_connect_object(buffer, “mark_set”, G_CALLBACK(on_mark_set), statusbar, 0); 首先,mark_set是属于GtkTextBuffer的一个信号(BTW,GtkTextBuffer正是上述函数第一个参数的数据类型); 在GTK+ Reference Manual 中找到GtkTextBuffer这一项, 点击signals,可以看…

Terrible

i18n autoconf apue | linux programming by example | j2se | pointers on c Unix Network Programing

g_signal_connect() 和 g_signal_connect_swapped()的区别

gtk编程中常用到这两个函数,但是很多人对这两个函数的区别却不太清楚,至少是解释得不够准确。 我在这里找到了确却的解释: http://gtkforums.com/viewtopic.php?t=1177 简单的说,swapped函数会交换回调函数参数的顺序。 这有什么好处?从例子上看: <br /> /*这个函数会删除button,尽管用户数据的值是other_widget*/<br /> /* this will delete 'button' on its clicked signal, even though we're passing 'other_widget' as user_data */<br /> g_signal_connect(G_OBJECT(button), "clicked",…

char *strcat(char *s, char *t)

char *strcat(char *s, char *t) 把*t连接到*s,并保存在*s中,*s没有足够空间的话,编译器找不到这个小虫子,gdb也没有发现它,一运行它就钻出来… 一个可行的方案: #include <stdio.h> #include <string.h> #define MAX_NUM 100 int main() { char fn[MAX_NUM]; char *s = “abc”; char *t = “def”; strcpy(fn, s); strcat(fn, t); printf(“%s\n”, fn); return 0; } 另一个似乎也不错: #include <stdio.h> #define MAX_NUM 100 int main() { char fn[MAX_NUM]; char *s = “abc”; char *t = “def”; sprintf(fn, “%s%s”…

Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!