#include <gtk/gtk.h> // 头文件
// 按钮按下的处理函数, gpointer 相当于 void *
void deal_pressed(GtkButton *button, gpointer user_data)
{
// button指向main函数的button
// user_data 指向main函数的"I am a button"
// 获得按钮的文本信息
const char *text = gtk_button_get_label( button );
printf("%s ========= %s\n", (char *)user_data, text); // 打印内容
}
int main( int argc,char *argv[] )
{
gtk_init(&argc, &argv); // 初始化
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); // 创建顶层窗口
// 设置窗口边框的宽度(窗口里的控件与窗口边框间隔为15)
gtk_container_set_border_width(GTK_CONTAINER(window), 15);
GtkWidget *button = gtk_button_new_with_label("^_^"); // 创建按钮
gtk_container_add(GTK_CONTAINER(window), button); // 把按钮放入窗口(窗口也是一种容器)
/* 按钮按下(pressed)后会自动调用deal_pressed()
* "I am a button"是传给回调函数deal_pressed()的参数
*/
g_signal_connect(button, "pressed", G_CALLBACK(deal_pressed), "I am a button");
gtk_widget_show_all(window); // 显示窗口全部控件
gtk_main(); // 主事件循环
return 0;
}