gtk图形界面编程day01

#include<stdio.h>
#include<gtk/gtk.h>

/*定义回调函数hello,单击按钮时系统自动调用*/

void hello(GtkWidget *widget,gpointer *data)
{
    g_print("button clicked and data = %s\n",(char *)data);
}

/*定义回调函数destroy,关闭窗口时系统自动调用*/
void destroy(GtkWidget *widget,gpointer *data)
{
    gtk_main_quit();
}

int main(int argc,char **argv)
{
    /*定义指向控件的指针*/
    GtkWidget *window;
    GtkWidget *button;

    /*初始化图形显示环境*/
    gtk_init(&argc,&argv);

    /*创建窗口,并设置当关闭窗口时,要执行的回调函数*/
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    g_signal_connect(GTK_OBJECT(window),"destroy",
                    GTK_SIGNAL_FUNC(destroy),NULL);
    /*设置窗口属性*/
    gtk_container_border_width(GTK_CONTAINER(window),20);

    /*创建按钮,并设置当单击按钮时,要执行的回调函数*/
    button = gtk_button_new_with_label("Hello World");
    g_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(hello),"I am from button");

    /*将按钮加入到窗口中*/
    gtk_container_add(GTK_CONTAINER(window),button);
    /*显示按钮和窗口*/
    gtk_widget_show(button);
    gtk_widget_show(window);

    /*进入消息处理循环*/
    gtk_main();
    return 0;
}
(1)所有的GTK+程序中都包含头文件gtk/gtk.h,他声明列所有GTK+编程中要使用的常量,数据结构和函数
(2)所有GTK+程序都要调用函数gtk_init(gint *argc,gchar ***argv).
   该函数定位和打开图形显示,并对颜色,信号等进行初始化。在命令行输入的参数由该函数传递给GTK+,
   该函数读取并获得与他有关的命令行参数
(3)函数gtk_window_new(GTK_WINDOW_TOPLEVEL)用于创建顶级窗口,GTK+程序的主窗口被称为顶级窗口。
   虽然一个程序可以创建多个顶级窗口,但通常只创建一个。
(4)图形界面下,用户的任何一个操作(如单击鼠标左键,按下键盘上的某个键)都称为发生了一个事件,GTK+
   都有相应的消息信号产生,如果程序中定义了处理该消息信号的函数,在事件发生后,消息信号处理函数会
   自动调用。这样的消息信号处理函数也称为回调函数,因为这种函数虽然是在程序里定义,但程序中并没有
   显示调用而是由系统在时间爱呢发生后自动调用。
   hello()和destory()就是两个处理消息的回调函数。destory函数中调用了GTK+函数gtk_main_quit,
   他使程序退出gtk_main()并完成一些清理工作。g_signal_connect函数用于在控件和消息处理函数间建
   立关联,该函数的第一个参数为产生消息的控件,第二个参数是消息名,第三个参数时消息发生后要调用的函
   数名,第四个是传递给消息处理函数的参数,可以为空值。
(5)gtk_container_border_width函数用于设置窗口边框的宽度,这是一个设置窗口属性的函数。
(6)gtk_button_new_with_label函数创建一个带文本标签的按钮,他完成内存分配,并把所分配到的内
   存的首地址赋给GtkWidget类型的指针
(7)函数gtk_container_add通知GTK+将按钮加入到主窗口中,函数gtk_widget_show用于显示控件
(8)gtk_main()使GTK+进入消息处理循环。每个GTK+应用程序都有一个gtk_main函数,该函数使程序进入
   休眠状态。当有时间发生,如果程序有相应的处理函数,gtk_main()就调用相应的消息处理函数
(9)为了方便编译,可以在源程序所在的目录下编写一个Makefile文件
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值