Linux 操作系统下GTK+界面编程——第一个程序
今天,开始在工作之余,抽出时间来学习linux界面编程。我计划在未来的半年内,学会 linux下的GTK+界面编程。这个文档作为我学习linux编程的第一个文档,同时它也将上传到我163邮箱所附带的博客中去。所以,我会尽量做的详 细一点。以后还会有关于linux界面编程之类的学习笔记会被记录并上传到博客中。
我所用的linux版本是Red Hat 9.0
第一个程序——Hello,World
在开始写第一个程序之前,需要做一点基本操作。
我登陆linux使用的是root用户(根用户,也叫超级用户)。所以,所有笔记中产生的截图,均是root用户下的。
一、在linux桌面点击右键,在快捷菜单中选择“新建终端”选项,打开类似DOS的窗口。
二、 使用mkdir命令创建一个文件夹,文件夹命名为gtkgui,命令输入为:mkdir gtkgui 如图1.2所示
输入完毕后敲回车键即可创建目录gtkgui,需要注意的是该目录的路径是:/root/gtktui
三、使用cd命令进入目录gtkgui 命令输入:cd gtkgui
输入命令后敲回车键即可进入目录gtkgui
四、创建第一个程序存放的目录,和第一步一样,这次在gtkgui目录下创建一个子目录1gui 然后进入1gui目录。创建目录命令:mkdir 1gui 进入目录命令:cd lgui 命令界面输入。
(注意1gui第一个字符是“一”,不是小写的L)。
小提示:若你想查看当前目录的绝对路径。可以在终端敲入命令:pwd
现在可以清楚的看到当前工作目录是“/root/gtkgui/1gui”。
五、编写代码,在开始写第一个程序之前,说说VI编辑器。假设要写的程序是firstgui.c
,则在终端中敲入 vi firstgui.c 然后回车,就进入编辑文件firstgui.c状态了,VI命令后面的文件若存在,则直接打开,若不存在,则新建一个。进入文件编辑状态后,必须按a键, 才可向文件输入东西,当编辑完后,按esc键退出编辑模式,再按shift+;键,最后输入wq(write and quit)退出VI。好了,在写程序中,再说一遍就记住了。
1、 创建 firstgui.c并编辑它
命令:vi first.c 然后敲回车进入编辑模式
必须先按下 a 键(还有其他的键也可(如i键),不过我觉得按下a键比较方便)才可输入字符,现在按一下a键,终端变成图1.8所示的效果。
按一下a键后(注意左下方有个--插入--),进入编辑模式
现在开始输入第一个程序的代码,代码原型如下:
#include <gtk/gtk.h>
int main(int argc,char*argv[])
{
GtkWidget *window;
gtk_init(&argc,&argv);
window=gtk_window_new(GKT_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),”Hello,World”);
gtk_widget_show(window);
gtk_main();
return 0;
}
现在代码输入完毕,需要保存文件并推出编辑器,先按一下esc键退出编辑模式,然后按组合键:shift+;键 最后输入wq并敲回车键就保存了文件并退出编辑模式了。退出VI后的界面如图1.20所示。
使用ll命令(小写的LL)查看刚才编写的firstgui.c是否存在。
若想看文件内容,使用cat firstgui.c 命令就可看到文件firstgui.c的内容了。
六、编译代码
在终端敲入下列命令及参数,编译连接程序
命令及参数:gcc firstgui.c -o firstgui `pkg-config --cflags --libs gtk+-2.0`
命令说明: gcc 编译命令
firstgui.c 源程序文件名
-o 编译参数,(不是0(零),是opq的o)
firstgui 编译连接后的可执行文件名,可以为任意合法的文件名
` 这个符号是和~呆在一起的那个键上,不要误认为是单引号‘
pkg后面与-config之间没有空格
cflags 前面是两个短线 --
libs前面也是两个短线 --
七、运行程序
键入 ./firstgui 后回车便可看到效果了。
需要注意的是,该程序当你点击窗口右上角上的小X关闭窗口时,窗口倒是关闭了。但是程序还在运行,你必须在终端下按组合键:Ctrl+c来关闭进程。
八、程序分析
GtkWidget *window; 相当于Windows下的
WNDCLASS
结构体,不过window在此只是一个窗口指针,用于指向函数gtk_window_new()函数返回的窗口地址而已。
gtk_init(&argc,&argv);
初始化界面库等一系列操作的函数,当其调用失败时,其将终止我们的程序,目前只要记住在编写任何窗口函数之前,都保证该函数是第一个被调用的就行了。
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
该函数创建一个新的GtkWidget对象(目前我认为其就是创建了一个还没有显示的窗 口),并返回该对象的指针。该函数参数仅有两个,其中一个是上面的GTK_WINDOW_TOPLEVEL,表示创建一个“主窗口”,另一个则是 GTK_WINDOW_POPUP,表示创建一个弹出窗口。
gtk_window_set_title(GTK_WINDOW(window),”Hello,World”);该函数设置窗口的标题。
gtk_widget_show(window); 该函数将窗口显示出来。
gtk_main();该函数捕获一些消息吧。在没有调用函数gtk_main_quit()函数之前,即使你关闭窗口,进程也不关闭的原因就在此。
八、总结
创建窗口主要步骤:
1、GtkWidget *window;
2、gtk_init(&argc,&argv);
3、windows=gtk_window_new(GTK_WINDOW_TOPLEVEL);
4、gtk_widget_show(window);
5、gtk_main();
最后,注意编译命令。后面的那些参数。