第一章 X窗口系统简介 1
1.1 客户服务器模型 1
1.2 显示和屏幕 2
1.3 资源 3
1.4 请求 3
1.5 窗口的基本概念 3
1.5.1 窗口的层次结构 3
1.5.2 X的坐标系统 5
1.5.3 映射与窗口可见性 5
1.5.4 保存窗口的内容 6
1.6 事件 6
1.7 输入设备 7
1.7.1 鼠标 7
1.7.2 键盘 8
1.8 窗口管理器 8
1.9 应用程序与X窗口系统的界面 8
1.10 总结 10
第二章 Xt Intrinsics程序设计 11
2.1 命名协议 11
2.2 X工具包程序设计模型 12
2.3 Xt Intrinsics基本函数 13
2.3.1 初始化 13
2.3.2 建立专用工具包 14
2.3.3 管理widget 15
2.3.4 事件发送 16
2.3.5 设置widget资源 16
2.4 例子:memo 19
2.4.1 建立和使用memo 21
2.4.2 建立实用程序库 22
2.4.3 事件处理程序 23
2.4.4 回调函数 26
2.4.5 运用转换管理程序 27
2.5 应用程序上下文 33
2.6 小结 35
第三章 资源管理程序 36
3.1 什么是资源 36
3.2 指定资源 36
3.2.1 名字与类 37
3.2.2 资源管理程序的匹配算法 39
3.3 管理应用程序资源 40
3.3.1 装入资源数据库 40
3.3.2 检索应用程序资源 42
3.3.3 从命令行中获得资源 46
3.3.4 类型转换 47
3.3.5 动态资源 52
3.4 widget资源协议 55
3.5 总结 56
第四章 OLIT widget集 57
4.1 widget类 57
4.2 Intrinsics widget类 58
4.2.1 Core widget类 58
4.2.2 Composite widget类 59
4.2.3 Constraint widget类 60
4.2.4 Shell widget类 60
4.3 OLIT widget类 61
4.3.1 OLIT widget元类 62
4.3.2 动作widget 63
4.3.3 Manager widget 89
4.3.4 文本控制widget 103
4.3.5 Container widget 114
4.3.6 Popup widget 138
4.3.7 注册帮助 156
4.4 小结 158
第五章 事件的处理 159
5.1 事件的定义 159
5.2 事件屏蔽(event masks) 160
5.3 事件类型 160
5.3.1 键盘事件(Keyboard Events) 160
5.3.2 指针事件 162
5.3.3 交叉事件 162
5.3.4 焦点事件(FocusEvents) 166
5.3.5 爆光事件(Exposure events) 166
5.3.6 结构控制(Structure Control) 166
5.3.7 状态通知 167
5.3.8 颜色表通知 168
5.3.9 通讯事件 168
5.4 用Xt Intrinsics处理事件 168
5.4.1 事件处理器的使用 169
5.5 消费事件回调(consume event callback) 174
5.6 管理事件队列 176
5.7 超时的处理 177
5.7.1 超时在报警方面的使用 177
5.7.2 循环超时 181
5.8 工作过程的使用(using Work Proceduress) 183
5.9 其它输入源的处理 187
5.9.1 输入回调的使用 187
5.10 总结 196
第六章 颜色的使用 197
6.1 X颜色模型 197
6.1.1 颜色表 197
6.1.2 颜色的分配 201
6.2 示例:一个颜色表编辑器 205
6.2.1 头文件:coloredit.h 206
6.2.2 源文件:coloredit.c 207
6.2.3 类资源文件 213
6.3 总结 215
第七章 光栅图象的操作 216
7.1 象素图 216
7.2 位图 216
7.3 可画区域间的拷贝 217
7.4 图象 222
7.4.1 图象的创建 222
7.4.2 图象的显示 223
7.5 摘要 227
第八章 图形环境 228
8.1 图形环境的创建 228
8.2 图形环境的操作 230
8.2.1 显示功能(display function) 230
8.2.2 位级屏蔽(plane Mask) 231
8.2.3 前景与背景 231
8.2.4 直线属性 232
8.2.5 填充形式 233
8.2.6 字体 234
8.2.7 剪取屏蔽 235
8.3 图形暴露(GRAPHICS EXPOSURES) 235
8.4 区域 235
8.5 小结 237
第九章 文本与字体 238
9.1 字体 238
9.2 文本操作 239
9.3 示例:一个文件浏览器 240
9.3.1 加入平滑滚动 248
9.4 小结 251
第十章 X图形原语的使用 252
10.1 点的绘制 252
10.2 线的绘制 261
10.3 多边形和弧的绘制 265
10.4 示例:一个简单的绘画程序 267
10.5 小结 278
第十一章 客户之间的通信 279
11.1 原子 279
11.2 使用特性 280
11.2.1 特性事件 283
11.2.2 使用特性以共享数据 283
11.3 与事件的通信 291
11.3.1 客户消息事件 291
11.3.2 一个实例xtalk 292
11.4 X的选择技术 305
11.4.1 基本概念 305
11.4.2 用Xt Intrinsics进行选择 307
11.4.3 给memo程序增加选择功能 309
11.4.4 一个简单的剪贴板 312
11.5 OLIT的拖曳和引入技术 315
11.5.1 从源应用程序中拖出 315
11.5.2 引入到目标应用程序中 317
11.5.3 给coloredit程序增加拖曳功能 318
11.5.4 给draw程序增加一个引入点 323
11.5.5 DropTarget widget 328
11.5.6 用DropTarget widget实现拖曳操作 330
11.5.7 用DropTarget widget注册一个引入点 338
11.6 小结 345
第十二章 新widget的创建 347
12.1 widget的内部结构 347
12.1.1 widget的类记录 348
12.1.2 实例记录 350
12.1.3 继承 352
12.1.4 数据抽象 354
12.2 一个简单的widget:Dial widget 355
12.2.1 专用标题文件DialP.h 356
12.2.2 公用标题文件Dial.h 357
12.2.3 Dial widget源文件Dial.c 358
12.2.4 使用Dial widget 370
12.2.5 编译Dial widget程序 371
12.3 继承的使用与SquareDial widget 371
12.3.1 专用标题文件SquareDialP.h 372
12.3.2 公用标题文件SquareDial.h 372
12.3.3 源文件SquareDial.c 373
12.3.4 使用SquareDial widget类 376
12.4 元类 377
12.5 小结 378
第十三章 Composite Widget的创建 379
13.1 Composite widget的结构 379
13.2 Composite Widget:Row Widget 380
13.2.1 私有头文件:RowP.h 380
13.2.2 公有头文件:Row.h 381
13.2.3 源文件:Row.c 381
13.2.4 Row widget的使用 393
13.3 小结 395
第十四章 Constraint Widget的创建 397
14.1 Constraint Widget结构 397
14.2 一个约束widget:Tree Widget 398
14.2.1 树的私有头文件:TreeP.h 398
14.2.2 树的公有头文件:Tree.h 400
14.2.3 树的资源文件:Tree.c 400
14.2.4 Tree widget的使用 416
14.3 小结 420
附录A OLIT类树 421
附录B OLIT WIDGET参考 422
附录C 键与按钮定义 521
附录D LibX.h 524
附录E PIXMAPS 525