引入GTK+3.0的基本头文件#include<gtk/gtk.h>
和标准库文件#include<stdio.h>
;
声明窗口句柄GtkWidget *window;
,再声明一个按钮句柄GtkWidget *button;
;
在main函数内调用gtk_init初始化GTK环境gtk_init(&argc,&argv);
使用gtk_window_new(GTK_WINDOW_TOPLEVEL);
创建窗口,使用gtk_window_set_title(GTK_WINDOW(window),"My GTK+3.0 Program!");
设置窗口标题,使用gtk_button_new_with_label("按钮");
创建按钮,调用gtk_container_add将按钮添加进窗口中gtk_container_add(GTK_CONTAINER(window),button);
设置控件事件的函数为g_signal_connect;原型:
#define g_signal_connect (
instance,
detailed_signal,
c_handler,
data
)
参数说明:
instance:设置事件的控件句柄
detailed_signal:事件名称
c_handler:事件指针
data:控件唯一名称
无论是窗口还是控件,最后都需要调用gtk_widget_show函数显示。
当所有的创建工作完成后,调用gtk_main将控制权交由GTK环境。
完整代码:
#include<gtk/gtk.h>
#include<stdio.h>
GtkWidget *window;
GtkWidget *button;
int i = 0;
void button_click(GtkWidget *btn, gpointer data)
{
char s[100];
sprintf(s,"按下了%d次",i);
gtk_button_set_label(btn,s);
i++;
}
int main(int argc,char*argv[])
{
gtk_init(&argc,&argv);
gtk_window_maximize(window);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"My GTK+3.0 Program!");
button = gtk_button_new_with_label("按钮");
gtk_container_add(GTK_CONTAINER(window),button);
g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(button_click),"button 1");
gtk_widget_show(button);
gtk_widget_show(window);
gtk_main();
return 0;
}
编译方式:gcc m.c -o m.lexe `pkg-config --cflags --libs gtk+-3.0`
运行结果: