上面是linux下GTK+配置所需要的库,关于各个库的功能,查看http://www.gtk.org/overview.php,至于库的下载在http://www.gtk.org/download/linux.php。
linux下GTK+的一键安装和配置:(fedora16和centos下配置成功)
必要组件:
# yum install gtk2 gtk2-devel gtk2-devel-docs
可选组件:
# yum install gnome-devel gnome-devel-docs
查看是否已经安装gtk
$ pkg-config --list-all |grep gtk
显示结果一般如下
gtk+-unix-print-2.0 GTK+ - GTK+ Unix print support
gtk+-x11-2.0 GTK+ - GTK+ Graphical UI Library (x11 target)
pygtk-2.0 PyGTK - Python bindings for GTK+ and related libraries
gtk+-2.0 GTK+ - GTK+ Graphical UI Library (x11 target)
gtk-doc gtk-doc - API documentation generator
安装好之后,写个程序测试下
#include <gtk/gtk.h> int main(int argc, char *argv[]) { GtkWidget *windows; gtk_init(&argc,&argv); windows = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(windows), "Hello,World");
gtk_widget_show(windows); gtk_main(); return 0; }
GTK+程序的编译链接执行
$ gcc -o hello hello.c `pkg-config –libs –cflags gtk+-2.0`
命令说明: gcc 编译命令
hello.c 源程序文件名
-o 编译参数,(不是0(零),是opq的o)
hello编译连接后的可执行文件名,可以为任意合法的文件名
` 这个符号是和~呆在一起的那个键上,不要误认为是单引号‘
pkg后面与-config之间没有空格
cflags 前面是两个短线 --
libs前面也是两个短线 --
运行程序
键入 ./hello后回车便可看到效果了。
需要注意的是,该程序当你点击窗口右上角上的小X关闭窗口时,窗口倒是关闭了。但是程序还在运行,你必须在终端下按组合键:Ctrl+c来关闭进程。
程序分析
GtkWidget *windows; 相当于Windows下的WNDCLASS结构体,不过window在此只是一个窗口指针,用于指向函数gtk_window_new()函数返回的窗口地址而已。
gtk_init(&argc,&argv);初始化界面库等一系列操作的函数,当其调用失败时,其将终止我们的程序,目前只要记住在编写任何窗口函数之前,都保证该函数是第一个被调用的就行了。
windows=gtk_window_new(GTK_WINDOW_TOPLEVEL);该函数创建一个新的GtkWidget对象(目前我认为其就是创建了一个还没有显示的窗 口),并返回该对象的指针。该函数参数仅有两个,其中一个是上面的GTK_WINDOW_TOPLEVEL,表示创建一个“主窗口”,另一个则是 GTK_WINDOW_POPUP,表示创建一个弹出窗口。
gtk_window_set_title(GTK_WINDOW(windows),”Hello,World”);该函数设置窗口的标题。
gtk_widget_show(windows); 该函数将窗口显示出来。
gtk_main();该函数捕获一些消息吧。在没有调用函数gtk_main_quit()函数之前,即使你关闭窗口,进程也不关闭的原因就在此。
八、总结
创建窗口主要步骤:
1、GtkWidget *windows;
2、gtk_init(&argc,&argv);
3、windows=gtk_window_new(GTK_WINDOW_TOPLEVEL);
4、gtk_widget_show(windows);
5、gtk_main();