电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > DOCX文档下载
分享到微信 分享到微博 分享到QQ空间

GTK编程基本示例

  • 资源ID:459277115       资源大小:33.81KB        全文页数:8页
  • 资源格式: DOCX        下载积分:15金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要15金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

GTK编程基本示例

GTK编程基本示例 GTK 简单编程 下面的例子是一个GTK最基本例子,它仅仅在屏幕上弹出一个窗口,并且 即使关闭该窗口,该程序仍未退出。 /* File: base.c */#include int main( int argc, char *argv ) GtkWidget *window; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL);gtk_widget_show (window); gtk_main (); return(0);其中 gtk_init(&argc, &argv) 是gtk应用程序的初始化部分,它使gtk 应用程序可以接受某些命令行的参量: -gtk-module/载入另外的GTK模块-g-fatal-warnings/使所有警告是致命错误-gtk-debug/调试gtk-gtk-no-debug/不调试gtk-gdk-debug/调试gdk-gdk-no-debug/不调试gdk-display/指定display-sync/使X调用按顺序方式-no-xshm/不使用X共享内存-name/指定窗口管理器使用的程序名-class/指定窗口管理器使用的程序类型其中 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);gtk_widget_show (window);建立顶级窗口并且显示该窗口,它在缺省情况下是200x200大小。 最后 gtk_main() 使程序进入事件循环阶段,gtk将在内部处理事件。 现在让我们编译文件 base.c: gcc -Wall -g base.c -o base gtk-config -cflags gtk-config -libs其中 gtk-config -cflags 产生编译gtk所使用的头文件位置, gtk-config -libs 产生连接gtk程序所使用的库。一般地,涉及 gtk的库有: libgtk.so libgdk.so libgmodule.so libglib.so。 接下来把上面的例子变成一个稍微复杂的例子,该例子弹出一个 窗口,并且在窗口中显示一个按钮。 /* File: helloworld.c */#include void hello( GtkWidget *widget, gpointer data )g_print ("Hello Worldn");gint delete_event( GtkWidget *widget, GdkEvent *event, gpointer data )/打印信息g_print ("delete event occurredn");/如果返回FALSE,GTK将发出"destroy"信号; 如果返回TRUE,/则不让该窗口关闭return(TRUE);void destroy( GtkWidget *widget, gpointer data )gtk_main_quit();int main( int argc, char *argv )/GtkWidget 是 Widget的类型GtkWidget *window;GtkWidget *button; /gtk 初始化gtk_init(&argc, &argv); /建立新窗口window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /当使用窗口管理器关闭窗口时,将调用 delete_event() 函数/本例中所传递的参数是 NULLgtk_signal_connect (GTK_OBJECT (window), "delete_event",GTK_SIGNAL_FUNC (delete_event), NULL); /把 "destroy" 事件和信号处理器联系起来gtk_signal_connect (GTK_OBJECT (window), "destroy",GTK_SIGNAL_FUNC (destroy), NULL); /设置窗口的边界宽度gtk_container_set_border_width (GTK_CONTAINER (window), 10); /建立一个标签是"Hello World"的按钮button = gtk_button_new_with_label ("Hello World"); /当按钮被单击时,即接收到"clicked"信号,将调用 hello()函数gtk_signal_connect (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (hello), NULL);/当按钮被单击时,调用 gtk_widget_destroy(window)关闭窗口。/这里将引发 "destroy" 信号gtk_signal_connect_object (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (gtk_widget_destroy),GTK_OBJECT (window); /把按钮加入顶级窗口中gtk_container_add (GTK_CONTAINER (window), button);/显示按钮gtk_widget_show (button); /显示顶级窗口gtk_widget_show (window);/进入事件循环gtk_main (); return(0);编译连接 helloworld.c,执行结果为: 下面总结一下,编写GTK程序的基本步骤: · 初始化 · 创建主窗口 · 创建并加入子窗口 · 设置组件回调 · 显示窗口 · 进入事件循环 GTK中文程序示例 上面的例子是英文编程的基本例子,如果在程序中使用中文,还应当 对上面的例子作适当的修改。当然最基本的要求还是Linux系统必须有 一个正确的国际化环境,具体地说就是: · 系统支持中文C Locale · 系统支持中文X Locale · GTK的资源文件/etc/gtk/gtkrc.zh_CN设置正确 对于上面的几个要求,可以参阅本书的国际化编程部分。 下面是一个典型的 gtkrc.zh_CN文件,其中指定的缺省字体是14点阵 字体。 # $(gtkconfigdir)/gtkrc.zh_CN# This file defines the fontsets for Chinese language (zh) using# the simplified chinese standard GuoBiao as in mainland China (CN)# 1999, Pablo Saratxaga #style "gtk-default-zh-cn" fontset = "-adobe-helvetica-medium-r-normal-14-*-*-*-*-*-iso8859-*, -cclib-song-medium-r-normal-14-*-*-*-*-*-gbk-0"class "GtkWidget" style "gtk-default-zh-cn"使上述程序支持中文非常简单,只需要在初始化gtk之前调用locale设置函数: /设置Locale gtk_set_locale(); /gtk 初始化 gtk_init(&argc, &argv);把按钮的标签改为中文即可: /建立一个含中文标签的按钮 button = gtk_button_new_with_label ("大家好!");程序运行的结果是: 如果不想用缺省的资源文件中所指定的字体,也可以在程序中指定 资源文件或直接把fontset写在程序中。 指定资源文件使用函数 gtk_rc_parse(filename),直接使用fontset使用函数 gtk_rc_parse_string (gtkrc_string)。 实例详细剖析 上面的例子中,我们遇到了许多新的数据类型和回调的方式等,下面 一一剖析: · 包含的头文件: 如果程序只涉及到gtk部分,而不是直接调用gdk的函数,只须包含 gtk/gtk.h,如涉及到gdk部分,应包含gdk/gdk.h · 数据类型: glib 中定义了许多数据类型如 gpointer,gint等等,它们都是比较 容易理解的。对GTK的组件(GtkWidget),类型都是GtkWidget,它包含了一个 窗口组件所需要的信息。GdkEvent 则封装了X事件的信息。 · 信号和回调 信号(Signal)是GTK中出现的新的并且比较重要的概念。这里讲的"信号" 不同于UNIX的signal,只是名称一样。当处理X事件时,如鼠标按键按下, GTK的组件接收到这一事件,便发出响应的信号。不同的组件相关信号 可能不一样。 在上述例子中使用函数 gint gtk_signal_connect( GtkObject *object, gchar *name, GtkSignalFunc func, gpointer func_data );把组件 object 与回调函数 func 联系起来,name 是所发出的信号的 名称。func_data 是传递给回调函数的参数。 回调函数的格式是 void callback_func( GtkWidget *widget, gpointer callback_data );其中 widget 是发出信号的组件,callback_data 是传递参数的指针。 在上例中还使用了另外一套类似的函数: gint gtk_

注意事项

本文(GTK编程基本示例)为本站会员(汽***)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.