第1章 概论 1
1.1 嵌入式系统的基本概念 1
1.2 嵌入式系统的特征 1
1.3 选择Linux构建嵌入式系统 2
1.4 GUI在嵌入式Linux系统中的地位及要求 3
1.5 用户界面概况 4
1.5.1 用户界面的历史 4
1.5.2 图形用户界面的特征 4
1.5.3 图形用户界面系统的结构模型 5
1.5.4 用户界面的发展:GUI+新人机交互技术 6
1.6 Linux图形环境及桌面平台简介 6
1.7 各种嵌入式Linux上的图形库与GUI系统介绍 13
1.7.1 Qt/Embedded 13
1.7.2 MicroWindows/NanoX 14
1.7.3 MiniGUI 15
1.7.4 OpenGUI 16
1.7.5 GTK+ 17
1.8 Linux系统中的多语言问题 18
1.9 一个嵌入式LinuxGUI系统开发的实例 21
1.9.1 开发GUI系统主要考虑的问题 22
1.9.2 后续讲解的实例 24
第2章 Linux基本编程知识 25
2.1 编译器的使用 25
2.2 函数库的使用 27
2.3 Makefile 28
2.4 GDB 30
2.5 建立交叉编译环境 34
2.5.1 什么是交叉编译环境 34
2.5.2 交叉编译的基本概念 34
2.5.3 建立arm_linux交叉编译环境 34
2.6 Linux下常见的图形库编程简介 42
2.6.1 Qt 43
2.6.2 GTK+ 57
第3章 Linux高级程序设计简介 62
3.1 Linux IPC介绍 62
3.1.1 信号 63
3.1.2 管道 68
3.1.3 消息队列 71
3.1.4 信号量 71
3.1.5 共享内存 71
3.1.6 Domain Socket 73
3.2 Linux多线程编程介绍 77
3.2.1 创建线程 78
3.2.2 线程的退出与取消 81
3.2.3 线程退出时的同步问题 83
3.2.4 线程清理函数 83
3.2.5 线程取消状态 84
3.2.6 线程同步 84
3.2.7 第三方函数库 94
3.3 FrameBuffer编程简介 95
第4章 基本体系结构 100
4.1 基础知识 100
4.1.1 嵌入式Linux的GUI到底有什么用 100
4.1.2 如何定义基本体系结构 101
4.1.3 为什么用客户机/服务器结构 101
4.1.4 为什么要多进程 102
4.1.5 为什么要多线程 103
4.2 体系结构综述 103
4.2.1 客户机与服务器之间的通信通道 103
4.2.2 客户机需要与服务器交换什么信息 105
4.2.3 服务器对客户机进程的管理 107
4.3 进程创建与进程的管理 109
第5章 多窗口的设计与实现 110
5.1 窗口树 110
5.2 窗口的Z序 112
5.3 窗口的剪切与剪切域 112
5.3.1 如何生成窗口剪切域 112
5.3.2 窗口/控件剪切域的生成过程 113
5.3.3 窗口剪切域的存储方法 114
5.4 进程主窗口的初始剪切域与进程内窗体剪切域 115
5.5 客户端对剪切域的管理 116
5.6 窗口类的注册管理 117
5.6.1 注册内容 118
5.6.2 如何管理注册窗口类 118
5.6.3 注册窗口类如何发挥作用 121
第6章 GUI中的消息管理 123
6.1 外部事件收集与分发 123
6.2 消息队列 125
6.3 GUI的消息 125
6.3.1 LGUI的消息队列结构 126
6.3.2 通知消息(NotifyMessage) 128
6.3.3 邮寄消息 129
6.3.4 同步消息 131
6.3.5 绘制消息 132
6.3.6 其他消息发送方式 134
6.4 LGUI中消息堆的内存管理 134
第7章 窗口输出及无效区的管理 137
7.1 窗口的客户区与非客户区 137
7.2 坐标系统 137
7.3 输出管理机制 138
7.4 无效区 139
第8章 DC与GDI的设计与实现 142
8.1 设备上下文DC的描述 142
8.2 GDI 145
8.3 预定义GDI对象的实现 145
8.4 GDI对象的描述结构及创建方法 146
8.5 将GDI对象选入DC中 147
8.6 GDI绘图及优化 147
8.7 图形库 156
8.7.1 GD 156
8.7.2 Cairo 157
8.7.3 AGG 157
8.7.4 GDI与GDI+ 160
第9章 控件实现 163
9.1 如何实现一个控件 163
9.2 不同消息的处理过程 169
第10章 定制GUI对图像的支持 174
10.1 GUI中图像解码的基本需求 174
10.2 BMP文件 175
10.3 JPEG文件 176
10.4 GIF文件 177
10.5 PNG文件 178
第11章 字库及输入法的实现 180
11.1 字符集与字符编码 180
11.1.1 ASCII码 180
11.1.2 DBCS双字符集 180
11.1.3 Unicode 181
11.2 在嵌入式GUI中如何支持字符集与编码 183
11.3 在GUI中选择合适的字符集 184
11.4 关于字库的问题 185
11.5 FreeType 189
11.6 输入法 192
第12章 GUI的移植 194
12.1 操作系统适配层 194
12.2 输入设备的抽象 198
12.3 显示设备的差异 199
第13章 LGUI应用开发模式 200
13.1 应用开发的模式 200
13.2 开发调试方法 202
13.3 应用程序简例 203
第14章 GUI系统的效率问题 206
后记——LGUI开发的一些体会 208
参考文献 210