linux GTK+界面编程(转)
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(); 最后,注意编译命令。后面的那些参数。 |