bitmilong 发表于 2008-04-07 21:09

[程序开发]GTK+ 2.0 教程 中文版

[程序开发]GTK+ 2.0 教程 中文版

译者: huzheng,konghui,ferry,carton,yang_yi,ddd,tingle
版本号: V_0.1.0  2002年6月25日
本文是有关通过 C 语言接口使用 GTK (the GIMP Toolkit) 的教程。

简介
GTK (GIMP Toolkit) 是一套用于创建图形用户界面的工具包。它遵循 LGPL 许可证,所以你可以用它来开发开源软件、自由软件,甚至是封闭源代码的商业软件,而不用花费任何钱来购买许可证和使用权。

GTK 被称为 GIMP 工具包是因为最初写它是用来开发 GIMP (GNU 图像处理程序) 的,但是它现在已经被用于很多软件项目了,包括 GNOME (GNU 网络对象模型环境)。GTK 是在 GDK (GIMP Drawing Kit) 和 gdk-pixbuf 的基础上建立起来的,GDK 基本上是对访问窗口的底层函数 (在 X 窗口系统中是 Xlib) 的一层封装,gdk-pixbuf 是一个用于客户端图像处理的库。

GTK 的创建者是:


Peter Mattis petm@xcf.berkeley.edu

Spencer Kimball spencer@xcf.berkeley.edu

Josh MacDonald jmacd@xcf.berkeley.edu

GTK 的当前维护者是:


Owen Taylor otaylor@redhat.com

Tim Janik timj@gtk.org

GTK 实质上是一个面向对象的应用程序接口 (API)。尽管完全用 C 写成的,但它是基于类和回调函数 (指向函数的指针) 的思想实现的。

还有一个名为 GLib 的第三个组件,包含一些标准函数的替代函数,以及一些处理链表等数据结构的函数等。这些替代函数被用来增强GTK 的可移植性,因为它们所实现的一些函数在其它 Unix 系统上未实现或不符合标准,比如 g_strerror()。一些是对 libc 的对应函数的增强,比如 g_malloc() 具有增强的调试功能。

在 2.0 版中,GLib 又加入这样一些新内容:构成 GTK 类层次基础的类型系统 (type system),在 GTK 中广泛使用的信号系统,对各种不同平台的线程 API 进行抽象而得的一个线程 API,以及一个加载模块的工具。

作为最后一个组件,GTK 使用了 Pango 库来处理国际化文字输出。

本教程讲述 GTK 的 C 接口。还有许多其它语言的 GTK 绑定如 C++、Perl、Python、TOM、Ada95、Objective C、Free Pascal、Eiffel、Java 和 C#。如果你想使用 GTK 其它语言的绑定,请先查看该绑定的文档。有时这些文档会讲一些重要的概念,然后你再来参考本教程。还有一些跨平台的 API (如 wxWindows 和 V),它们把 GTK 作为一个支持的平台。同样,先参考它们的文档。

如果你用 C++ 来开发 GTK 应用程序,有以下几点需要注意。已有一个 GTK 的 C++ 绑定叫做 GTK-- (译者注:现在叫做 gtkmm),提供一个更符合 C++ 规范的接口,你可以先看看这个接口。如果你由于种种原因不喜欢这种方法,还有另外两种使用 GTK 的方法。首先,你可以只使用 C++ 中的 C 子集来调用 GTK,这样就可以使用本教程描述的 C 接口。其次,你可以用下述方法同时使用 GTK 和 C++:把所用的回调函数定义为 C++ 类中的静态成员函数,然后仍然使用 C 接口来调用 GTK。如果你选择后一种方法,你可以把指向要操作的对象的指针 (即所谓的 "this")作为回调函数的 data 参数。选择哪一种方法仅仅是个人的喜好问题,因为不管用哪一种方法,你都会得到 C++ 和 GTK。它们都不需要特殊的预处理程序,因此你可以同时使用标准 C++ 和 GTK。

本教程试图尽可能详细地描述 GTK,但是肯定不能面面俱到。本教程假设你能够较好的理解 C 语言,并且了解怎样编写一个 C 程序。有 X 编程经验会很有帮助,但不是必要条件。如果 GTK 是你学习的第一个构件工具包,请告诉我们你怎样找到这个教程,以及学习时有什么困难。还有其它一些语言的绑定,如 C++、Objective C、ADA、Guile 等,但我不了解这些。

Table of Contents
中文版说明
简介
从这里开始
用 GTK 来写 Hello World
编译 Hello World 程序
信号和回调函数的原理
事件
Hello World 详解
继续
数据类型
深入探索信号处理函数
改进了的 Hello World
组装构件
组装盒的原理
盒的细节
组装示范程序
用表组装
表组装示例
构件概述
类型转换
构件的组织
无窗口构件
按钮构件
一般按钮 Normal Buttons
开关按钮 Toggle Buttons
复选按钮 Check Buttons
单选按钮 Radio Buttons
调整对象 Adjustments
创建一个调整对象
轻松使用调整对象
“调整对象”的内部机制
范围构件 Range Widgets
滚动条构件 Scrollbar Widgets
比例构件 Scale Widgets
创建一个比例构件
函数和信号(至少讲了函数)
常用的范围函数
设置更新方式
获得和设置调整对象
键盘和鼠标绑定
示例
杂项构件
标签 Labels
箭头 Arrows
工具提示对象 The Tooltips Object
进度条 Progress Bars
对话框 Dialogs
标尺 Rulers
状态栏 Statusbars
文本输入构件 Text Entries
微调按钮 Spin Buttons
组合框 Combo Box
日历 Calendar
颜色选择 Color Selection
文件选择 File Selections
容器构件 Container Widgets
事件盒 The EventBox
对齐构件 The Alignment widget
固定容器 Fixed Container
布局容器 Layout Container
框架 Frames
比例框架 Aspect Frames
分栏窗口构件 Paned Window Widgets
视角 Viewports
滚动窗口 Scrolled Windows
按钮盒 Button Boxes
工具栏 Toolbar
笔记本 Notebooks
菜单构件
手工创建菜单
手工菜单示例
使用套件
套件示例
无文档构件
快捷标签 Accel Label
选项菜单 Option Menu
菜单项 Menu Items
复选菜单项 Check Menu Item
单选菜单项 Radio Menu Item
分隔菜单项 Separator Menu Item
分离菜单项 Tearoff Menu Item
曲线图 Curves
绘图区 Drawing Area
字体选择对话框 Font Selection Dialog
消息对话框 Message Dialog
Gamma 曲线图
图像 Image
插头和插座 Plugs and Sockets
树视区 Tree View
文本视区 Text View
设置构件的属性
超时、IO 和 Idle 函数
超时 Timeouts
监控IO
Idle 函数
高级事件和信号处理
信号函数
连接和断开信号处理函数
阻塞和反阻塞信号处理函数
发出和停止信号
信号的发射和传播
操作选中区
概述
获取选中区信息
提供选中区
拖放
概述
属性
函数
设置源构件
源构件上的信号
设置目的构件
目的构件上的信号
GLib
定义
双向链表
单向链表
存储管理
计时器
字符串处理
实用程序和错误处理函数
GTK 的 rc 文件
rc 文件的功能
GTK rc 文件的格式
rc 文件示例
编写你自己的构件
概述
一个构件的剖析
创建一个复合构件
介绍
选择一个父类
头文件
_get_type() 函数
_class_init() 函数
_init() 函数
其余的...
从头创建构件
介绍
在屏幕上显示构件
表盘构件的原形
主体
gtk_dial_realize()
大小磋商
gtk_dial_expose()
事件处理
可能的增强
深入的学习
涂鸦板,一个简单的绘图程序
概述
事件处理
绘图区构件和绘图
添加XInput支持
允许扩展设备信息
使用扩展设备信息
得到更多关于设备的信息
进一步的讲解
编写 GTK 应用程序的技巧
投稿
鸣谢
教程的版权和许可声明
GTK 信号
GtkObject
GtkWidget
GtkData
GtkContainer
GtkCalendar
GtkEditable
GtkNotebook
GtkList
GtkMenuShell
GtkToolbar
GtkButton
GtkItem
GtkWindow
GtkHandleBox
GtkToggleButton
GtkMenuItem
GtkCheckMenuItem
GtkInputDialog
GtkColorSelection
GtkStatusBar
GtkCurve
GtkAdjustment
GDK 事件类型
示例程序代码
Tictactoe
tictactoe.h
tictactoe.c
ttt_test.c
GtkDial
gtkdial.h
gtkdial.c
dial_test.c
Scribble
scribble-simple.c
scribble-xinput.c
术语表



--------------------------------------------------------------------------------------
经常下载的人估计电脑里面都有几个G的电子书

有书不读真浪费,敬告四处下书的朋友们

下书千本不如读书一卷,闲下来时读点书

从现在开始...:em02: :em02: :em02:
---------------------------------------------------------------------------------------

**** Hidden Message *****

ttsir 发表于 2008-04-08 14:29

k

ooooooooooooooooooooooooooooooo

moon04 发表于 2008-04-08 21:59

好东东.. 找了好久的.

hhhyz 发表于 2008-04-08 23:03

好东东.. 找了好久的.

tsingming 发表于 2008-04-09 06:53

:oops: :oops: :oops:

thurday_aibcn 发表于 2008-04-09 09:15

dddddddddddddddddddddddddddd

heavenwalk 发表于 2008-04-09 09:26

lsilinux 发表于 2008-04-09 10:44

thank you!!

marshal97 发表于 2008-04-09 12:07

原帖由 bitmilong 于 2008-4-7 21:09 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
[程序开发]GTK+ 2.0 教程 中文版

译者: huzheng,konghui,ferry,carton,yang_yi,ddd,tingle
版本号: V_0.1.0  2002年6月25日
本文是有关通过 C 语言接口使用 GTK (the GIMP Toolkit) 的教程。

简介
...
RREEEEEEEEEEEEEEEEEEEEEEEEEEEEE

cjq8876 发表于 2008-04-09 14:12

:em02: :em02:
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: [程序开发]GTK+ 2.0 教程 中文版