如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
GTK+采用具有OO特色的C语言研发框架,这使他在研发GUI应用程式能和操作系统紧密结合,同时具有非常大简洁性,其中的非常多代码只要简单的复制和更改即可完成,只用一个C原始码文件就能创建一个LINUX下的GUI程式。本文的代码运行环境是Redhat7.2,GTK+版本是gtk+2.1.2。用GTK+写的HelloWorld下面的代码是笔者用GTK+编写的一个HelloWorld例程,编译后运行显示一个带按钮的窗口,点击按钮会弹出提示信息对话框。//hello.c#include//主窗口中按钮的回调函数voidon_button_clicked(GtkWidget*button,gpointeruserdata){GtkWidget*dialog;//创建带确认按钮的对话框,父控件为空dialog=gtk_message_dialog_new(NULL,GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,(gchar*)userdata);gtk_dialog_run(GTK_DIALOG(dialog));//显示并运行对话框gtk_widget_destroy(dialog);//销毁对话框}//主函数intmain(intargc,char*argv[]){GtkWidget*window,*button;//初始化GTK+程式gtk_init(&argc,&argv);//创建窗口,并为窗口的关闭信号加回调函数以便退出window=gtk_window_new(GTK_WINDOW_TOPLEVEL);g_signal_connect(G_OBJECT(window),"delete_event",G_CALLBACK(gtk_main_quit),NULL);gtk_window_set_title(GTK_WINDOW(window),"HelloWorld!");gtk_container_set_border_width(GTK_CONTAINER(window),10);//创建按钮控件,为单击信号加回调函数,将其放入窗口中button=gtk_button_new_with_label("HelloWorld!");g_signal_connect(G_OBJECT(button),"clicked",G_CALLBACK(on_button_clicked),(gpointer)"你好!\n自由的世界。");gtk_container_add(GTK_CONTAINER(window),button);//下面函数显示窗口控件同时显示其中的所有其他控件gtk_widget_show_all(window);gtk_main();returnFALSE;}能直接用命令"gcc`pkg-config-cflags-libsgtk+2.0`hello.c-ohello"来编译上面的代码,但最佳做一个Makefile文件内容如下:CC=gccall:$(CC)`pkg-config--cflags--libsgtk+-2.0`hello.c-ohello这样的话能用make命令来编译,使得简单了许多,也不容易出错了。再次强调的是关于引号的问题,非常多初学者常犯这个错误,[`]是[~]下面的那个单引号,而非[’];这涉及到了LINUXSHELL编程中的命令引用,LINUX下的标准的BASH是支持命令引用的,而其他的SHELL就不一定了。下两图分别为程式的运行时的窗口和点击HelloWorld按钮弹出的对话框:初始化、主循环和退出和MSWINDOWS下用C研发GUI程式不同,GTK+不用WinMain函数,由C语言中的标准格式的main函数直接切入,这在UNIX操作系统家族中是统一的。函数gtk_init标致GTK+程式的开始,他的两个参数是main函数的两个参数的地址。在此函数之后就能处理程式的各种相关部分,如控件的创建、显示、为控件的信号加回调函数、设定或修改控件的属性等。最后执行gtk_main函数,程式进入主事件循环,开始接收信号并为信号调用其相应用的回调函数。函数gtk_main_quit用来结束主事件循环,即退出GTK+程式的运行。控件的创建、显示和布局GTK+中的控件分为容器控件和非容器控件1,非容器控件主要是基础的GUI元素,如文字标签、图像、文字录入控件等,容器控件有多种,一起点是能按一定方式来排放其他控件,GTK+以此形成了独特的GUI界面布局风格。GTK+控件的创建函数一般形式为:gtk_控件名_new(参数…)或gtk_控件名_new_with_参数名(参数…),他的返回值为GtkWid