第一部分 用GTK+编程 3
第1章 介绍GTK+ 3
1.1 对读者的要求 3
1.2 本书的内容 3
目录 3
1.3 从何处得到GTK+ 4
1.4 如何建立GTK+ 4
1.5 如何从源代码建立GTK+ 4
1.6 运行实例需要什么条件 5
1.7 从何处得到样本程序 5
1.8 从何处可以得到更多的帮助 5
2.1 类型 6
2.2 消息 6
第2章 GLIB 6
2.2.1 g_error 7
2.2.2 g_warning 7
2.2.3 g_message 7
2.2.4 g_print 7
2.2.5 定制错误处理 7
2.3 判断 10
2.4 字符串函数 11
2.5 单链接表 12
2.5.1 增加表项 13
2.5.2 保持链接表的排序 13
2.5.3 查找链接表的表项 14
2.5.4 链接表的长度 14
2.5.5 从链接表删除表项 14
2.5.7 查看链接表 15
2.5.6 取得第n个表项 15
2.5.8 释放链接表 16
2.6 双链接表 16
2.6.1 链接表的性能 17
2.7 Hash表 17
2.7.1 建立Hash表 17
2.7.2 从Hash表删除数据项 19
2.7.3 删除Hash表 20
2.8 树 20
2.8.1 比较函数 20
2.8.2 建立树 20
2.8.3 插入数据项 20
2.8.4 查找数据项 20
2.8.5 遍历树 21
2.9 内存管理 22
2.10 小结 23
第3章 开发GUI应用 24
3.1 建立GTK+应用 25
3.1.1 初始化GTK+ 25
3.1.2 建立窗口 25
3.1.3 GTI+的事件循环 26
3.1.4 GTK+数据类型 27
3.1.5 信号和回呼函数 28
3.1.6 增加信号处理程序 28
3.2 增加构件 30
3.2.1 多事件处理程序 33
3.3 容器 34
3.3.1 组合框 34
3.3.2 组合表 38
3.4 小结 43
第4章 基本构件 44
4.1 常用的构件函数 44
4.1.1 转换构件的类型 44
4.2 按钮 45
4.3 触发按钮 48
4.4 检查按钮 52
4.5 选择按钮 53
4.6 标号 54
4.7 录入构件 55
4.8 列表框 56
4.9 复合框 60
4.10 选项菜单 61
4.12 小结 63
4.11 容器 63
第5章 菜单、工具条和工具提示 64
5.1 开始 64
5.2 菜单 65
5.2.1 检查菜单项 67
5.3 选择菜单项 68
5.4 工具提示 69
5.5 快捷键 69
5.6 合并代码 70
5.7 套件 72
5.7.1 对套件进行编程 73
5.8 使用套件和手工建立菜单的比较 77
5.9 像元图 77
5.10 工具条 79
5.10.1 增加工具条按钮 80
5.10.2 在工具条中增加其他项 81
5.10.3 在工具条中增加空隙 82
5.11 建立应用的用户界面 82
5.11.1 建立应用的窗口和菜单 83
5.11.2 建立工具条 86
5.11.3 协调工具条和菜单项 89
5.12 小结 91
第6章 更多的构件 92
6.1 框架 92
6.2 正文构件 93
6.2.1 建立正文构件 94
6.2.2 插入和删除正文 96
6.2.3 滚动条 97
6.3 对话框 99
6.4 文件选择对话框 107
6.5 进度条 109
6.5.1 使用定时器 113
6.5.2 测试进度条 113
6.6 小结 116
第二部分 应用举例 119
第7章 编写计算器应用 119
7.1 计算器程序 119
7.1.1 数据结构 119
7.1.2 主程序 121
7.1.3 CreateCalculatorButtons 123
7.1.4 CreateButton 123
7.2 小结 133
第8章 开发简单的字处理程序 135
8.1 main.c 136
8.2 menu.c 137
8.3 misc.c 142
8.4 showmessage.c 142
8.5 about.c 144
8.6 filesel.c 145
8.7 Notepad.c 148
8.7.1 Cut、Copy和Paste 149
8.7.2 建立空白构件 150
8.7.3 装入文件 151
8.7.4 保存文件 152
8.7.5 搜索正文 154
8.7.6 进度条 160
8.8 小结 160
第9章 扫雷 161
9.1 bitmaps.h 162
9.2 Digits.h 166
9.3 Timer.c 170
9.4 Minesweeper.c 172
9.5 Menu.c 192
9.6 其余的文件 196
9.7 小结 197
第三部分 绘图、颜色和GDK 201
第10章 绘图工具集 201
10.1 绘图子程序 201
10.1.1 画像元 201
10.1.2 画直线 201
10.1.3 画矩形 202
10.1.4 画多角形 202
10.1.5 画多条线 203
10.1.6 画圆和圆弧 204
10.2 显示正文 205
10.3 绘制像元图 205
10.4 绘图区构件 206
10.5 可绘制区事件 206
10.6 简单的时钟应用 206
10.6.1 消除闪烁 212
10.7 系统监视 220
10.7.1 使用/proc文件系统 220
10.7.2 说明 221
10.8 小结 249
第11章 式样、颜色、字体、光标和引用 250
11.1 式样(颜色和字体) 250
11.1.1 颜色 250
11.1.2 使用式样 251
11.1.3 选择颜色对话框 262
11.1.4 字体 272
11.2 光标 281
11.3 引用 290
11.4 小结 291
第12章 使用GDK的分子观察程序 292
12.1 文件格式 292
12.2 数据结构 294
12.3 3维绘图 295
12.4 源代码 295
12.4.1 ReadMolecule 296
12.4.2 FindBB 298
12.4.3 对原子进行分类 299
12.4.4 TransformPoints 301
12.4.5 绘制联结 303
12.4.6 原子的颜色 306
12.4.7 MoleculeRepaint 309
12.4.8 建立绘图区 310
12.4.9 程序的其余部分 331
12.5 小结 332
第13章 可移动影像和动画制作 333
13.1 动画 333
13.1.1 利用可移动影像 333
13.1.2 装入影像 336
13.1.3 显示影像 337
13.1.4 整个程序 341
13.2 电视游戏 351
13.2.1 用GTK+/GDK实现的游戏 351
13.2.2 建立游戏需要考虑的因素 352
13.2.3 游戏内部的细节 354
13.3 小结 410
第四部分 扩充GTK+ 413
第14章 树、列表和标记 413
14.1 树构件 413
14.1.1 树的建立 413
14.1.2 树的信号 415
14.1.3 建立文件浏览器 415
14.2 笔记本构件 423
14.2.1 增加和删除页 423
14.2.2 处理页 424
14.3 列表构件 425
14.3.1 将数据加入列表构件 425
14.3.3 提高插入和删除的速度 426
14.3.2 删除行 426
14.3.4 标题栏的特征 427
14.3.5 行与列参数 427
14.3.6 图表 428
14.4 建立应用程序 428
14.4.1 Logtypes.h 429
14.4.2 Parsellog.c 430
14.4.3 bitmaps.c 443
14.4.4 Notebook.c 445
14.5 小结 459
15.1.1 继承 460
15.1.2 从头做起 460
15.2 构件如何工作 460
15.1 理解构件 460
第15章 创建自己的构件 460
15.2.1 包含文件 461
15.2.2 宏 461
15.2.3 数据结构 462
15.2.4 原型 463
15.2.5 C代码 463
15.2.6 类的初始化 465
15.2.7 发送信号 467
15.2.8 初始化函数 467
15.3 创建构件 468
15.3.1 创建图形构件 469
15.3.2 头文件 469
15.3.3 图形程序 471
15.3.4 使用构件 479
15.4 小结 481