《Xlib程序设计手册》求取 ⇩

引言1

关于这本手册的说明1

内容概要1

目录1

如何使用这本手册2

实例程序3

一些要求3

手册中用到的字体约定3

有关文件3

欢迎指教4

关于发行执照4

致谢4

第一章引言6

1.1 X的版本6

1.2 X窗口系统概念6

图目录7

1-1. 由多个屏幕组成的显示系统7

1.2.2服务器-客户模式7

1.2.1显示器和屏幕7

1-2. 应用程序可以在横跨网络的任何系统上运行8

1.2.3窗口管理9

1.2.5对X的扩展10

1.2.4事件10

1.3 X窗口系统软件结构10

1.4 Xlib概貌11

1-3. 客户程序通过Xlib调用与服务器进行通信11

1-1.Xlib按功能分组的子程序12

表目录12

2.1 Xlib如何工作14

第二章X概念14

2.1.2缓冲15

2-1. 客户程序与服务器15

2.1.1 X协议15

2.1.3资源16

2-2. 服务器的事件队列和每个客户程序的事件队列17

2.1.4特性和标识号17

2.1.5窗口管理程序18

2-3. 用于建立窗口的xmh应用程序的例子19

2.2窗口是什么?19

2.2.1窗口特征20

2.2.2树形层次21

2-4. 窗口构造的组成成分21

2-5. 屏幕上的一个窗口层次22

2.2.3坐标系23

2-6. 窗口层次结构的图示23

2-7. 坐标系24

2.2.5映射和可见性24

2.2.4窗口叠次序(stacking order)24

2.3.1象点和颜色25

2.3 X图形入门25

2-8. 用着色图把象点值映射成颜色26

2.3.2象点和色板26

2.3.4画图和图形信息27

2.3.3三维象点图和可画物(drawable)27

2.4窗口特性的进一步介绍28

2-9. 如何用贴砖铺贴窗口的背景28

2.3.5贴砖和贴片28

2.4.2窗口结构29

2.4.1窗口属性29

2.4.4深度和着色类型30

2.4.5缩微窗口图象30

2.4.3类型、输入/输出和只输入窗口30

2.4.6根窗口的特殊性质31

2-10. 一个应用程序和它的缩微窗口图符31

2.5事件入门31

2.5.2事件的选择和传播32

2.5.1事件指什么32

2.5.3事件队列33

2.5.4事件结构33

2.6.1.1设计要求34

2.6.1设计一个应用程序34

2.6如何用Xlib进行程序设计34

2.5.5事件循环34

2.6.1.2用户接口35

2.6.2.2编译和链接X程序36

2.6.2.1用户缺省36

2.6.2编写X应用程序36

2.6.2.4使用结构、符号和表征码37

2.6.2.3命名约定37

2.6.3调试X应用程序38

2.6.2.5运行性能的优化38

2.6.3.2结构XErrorEvent39

2.6.3.1错误39

2.6.3.3同步的错误40

第三章基本的窗口程序41

3.1运行程序41

3.2Basicwin的主程序42

3-1. 程序basicwin的输出42

3.2.1包含文件和变量说明42

3.2.2与服务器连接44

3.2.3显示宏命令46

3.2.4获取窗口信息46

3.2.5建立窗口48

3.2.6颜色策略49

3.2.7准备图符的三维象点图50

3.2.8与窗口管理程序通信51

3.2.10建立资源54

3.2.9选择所希望的事件类型54

3.2.13建立事件采集循环55

3.2.12发送输出缓冲区55

3.2.11窗口映射55

3.2.13.1重画窗口58

3-2. 由一个用户动作引起的多个显露事件59

3.2.14什么时候可以画东西?63

3.2.16管理窗口尺寸的重设63

3.2.15所画的内容什么时候显现?63

3.2.17退出程序64

3.2.19小结65

3.2.18错误管理65

3.2.20 basicwin的全部源程序66

4.2窗口属性结构74

4.1建立窗口属性74

第四章窗口属性74

4-1. 窗口属性表征码符号75

4.3可通过程序设置的属性77

4-2. 可以单独设置的属性77

4.3.1窗口背景78

4.3.1.1 background_pixmap78

4.3.1.2 background_pixel79

4.3.2窗口边框79

4.3.2.1 border_pixmap79

4.3.2.2 border_pixel80

4.3.3内容重定位80

4-1. 画图程序的bit_gravity81

4.3.4窗口重定位82

4-2. 窗口重定位起作用的子窗口位置82

4.3.5后备存储83

4.3.6存储隐匿内容84

4.3.7事件处理85

4.3.8废除转送子结构重构请求特性85

4.3.10光标86

4.3.9着色图86

4.3.11窗口属性的缺省值87

4-3. 窗口属性的缺省值87

4.4结构XWindowAttributes的信息88

第五章图形信息90

5.1建立和设置图形信息91

5-1. 一个实心多边形的“源”91

5-1. 设置XGCValues结构的符号93

5.1.1建立和设置GC的例子94

5.2图形信息之间的转换95

5.3控制图形元语的影响96

5-2. GC中的逻辑函数97

5.3.1逻辑函数97

5-2a. 逻辑函数GXcopy的作用98

5-2b. 逻辑函数GXxor的作用98

5-2c. 逻辑函数GXand的作用99

5.3.2色板表征码99

5.3.3剪辑表征码99

5-3.plane_mask在12色板显示器上的作用100

5.4前景和背景100

5-5. 用XDrawlmageString画字符时,前景和背景的使用101

5-4. 使用剪辑原点定位相对于可画物的位置101

5.5线段特征101

5.5.1线宽102

5.5.4连接样式103

5-6. 线段样式103

5.5.2线段样式103

5.5.3线段端点的样式103

5-7. 线段端点的样式104

5.5.5长划线表和间距104

5-8. 线段连接样式105

5-9. 8象点宽的线段JoinRound说明105

5.5.6设置线段特征的例子107

5-10. 用例5-6中设置的GC画出的线108

5.6形成图案108

5-11. 用贴砖铺贴一个区域109

5.6.1贴砖109

5.6.2贴片110

5.6.3贴砖和贴片的尺寸110

5.6.4填充方式110

5.6.5填充规则111

5-13. 填充封闭多边形的常量fill_rull111

5-12. 在小三维象点图上示范fill_style111

5.6.6用于填充的弧方式112

5-14. 填充弧用的orc_mode常量112

5.7图形的显露113

5.8字体113

5.9子窗口方式114

5.10客户程序间共享GC114

5-15. 拷贝部分不可用的区域114

5-3. 图形信息缺省值115

5.11图形信息的缺省值115

第六章画图形和正文116

6.1画图116

6.1.1度量图形117

6-1.XDrawArc或者XDrawArcs的角度度量117

6.1.2画图实例118

6.1.3库程序draw_box119

6.1.5建立贴砖或贴片120

6.1.4填充120

6-2. 具有相同参数的XFillRectangle和XDrawRectangle画象点的效果对照121

6.1.6拷贝和清除区域123

6.2字体和正文123

6.2.1字符格式124

6.2.2装载字体124

6-3. XClearArca—— 当width或者height参数为0时,清除的区域124

6.2.3字符125

6.2.3.1结构XCharStruct126

6-4. 两个字符的尺度信息126

6.2.4正文的定位129

6.2.5画正文库程序130

6-5. 字符串的垂直定位130

6.2.6画正文的库程序131

6-1. 字体特性134

6.2.7字体特性135

6.3区136

6.2.8设置字体路径136

6.4 映象137

6.3.3返回有关区的信息137

6.3.2区的计算137

6.3.1区的移动和重新设置尺寸137

6.4.1管理映象139

6-6. bitmap_unit=16的映象的位和字节次序140

6.4.2使用映象的例子140

7-2. 象点值到RGB的映射:序140

6.5二维象点图的管理141

6.6光标141

6.6.1标准的光标字体143

6.6.2装载和改变光标144

7.1基本彩色项和概念145

第七章颜色145

7.2.2单色和灰度等级(Grayscale)146

7.2.1中等范围彩色显示器146

7-1. 象点值到RGB映象:彩显上利用着色图146

7-1. 象点值到RGB映象:彩显上利用着色图146

7.2显示硬件上的差别146

7.2.3高性能彩色显示器147

7-2. 象点值到RGB的映射:灰度显示器和单色显示器147

7.2.4 X如何管理不同的显示器类型148

7-3. 象点值到RGB的映射:高性能彩色显示器148

7.2.5可共享与可修改性149

7-1. 着色类型比较149

7-4. 着色类型等级150

7.2.6缺省着色类型150

7-2. 各种服务器上缺省着色图的着色类型151

7.2.7缺省着色图151

7.3分配共享颜色152

7.3.1 XColor结构153

7.3.2颜色名数据库153

7-3.颜色数据库154

7.3.3十六进制颜色说明155

7.3.4分配标准颜色的程序156

7.3.5指定明确的RGB值157

7-4. 指定粉红色的四种方法158

7.3.6选择缺省颜色158

7.4存贮客户私有的颜色159

7.4.1为图形的相互覆盖分配读/写色素160

7.4.2使用XAllocColorPlanes163

7.4.3单色显示器里的高亮度165

7.5建立和安装着色图165

7.5.1处理着色图的函数166

7.5.2事件ColormapNotify167

7.5.3需求着色图表(The required Colormap List)168

7.6标准着色图168

7.6.1标准着色图特性169

7.6.2结构XStandardColormap170

7-5. 将象点子字段移进象点值171

7.6.3 3/3/2标准着色图171

7.6.4安装标准着色图171

7.6.5 RGB值转换为象点值的例子172

7.7编写可移植的彩色程序174

7.7.1单色与彩色174

7.7.2检查着色类型175

7.7.3获取有关着色类型的信息176

7.7.3.1选择着色类型的实例177

7.8杂类颜色管理库程序179

第八章事件180

8.1事件处理概论180

8.2事件处理181

8.2.1事件结构181

8.2.2事件类型和XEvent联合182

8.2.3事件队列183

8.2.4处理事件183

8-1. 服务器的事件队列和每个客户程序的事件队列183

8.2.5输出事件类型187

8.2.6获取事件的库程序188

8-1. 读取事件库程序190

8.2.7判断子程序191

8.3选择事件193

8-2. 事件mask定义193

8.3.1事件表征码与事件间的对应关系195

8-3. 事件表征码,事件类型以及事件结构195

8.3.2设备事件的传播197

8-2a. 一种可能的选择方案198

8-2b. 另一种可能的选择方案198

8-2c. 又一种可能的选择方案199

8.3.2.1键盘聚焦窗口199

8.3.2.2独享键盘和指示器200

8.3.3.2 ButtonPressMask,ButtonReleaseMask和OwnerGrabButtonMask201

8.3.3事件表征码201

8.3.3.1 KeyPressMask和KeyReleaseMask201

8.3.3.3定位器运动表征码202

8.3.3.4 FocusChangeMask202

8.3.3.5 EnterWindowMask和LeaveWindowMask202

8-3. 降低窗口C产生成的Expose事件203

8.3.3.6 KeyMapStateMask203

8.3.3.7 ExposureMask203

8.3.3.9 ColormapChangeMask204

8-4. 引起VisibilityNotify事件的可见性转换204

8.3.3.8 VisibilityChangeMask204

8.3.3.10 PropertyChnageMask204

8.3.3.12 SubstructRedirectMask205

8.3.3.11 StructureNotifyMask和SubstructuredNotifyMask205

8.3.3.13 ResizeRedirectMask206

8.3.3.14自动选择事件206

8.4发送事件207

8-5. 介绍事件的其它章节208

8.5在何处有关每一个事件的更多资料208

9.1键盘210

第九章键盘和定位器210

9.1.1简单的键盘输入212

9.1.1.1获取字符串——对话窗口213

9.1.2键盘映射217

9.1.2.1键盘符号到字符串的映射218

9.1.2.2功能转换键219

9.1.2.3键代码到键符号的映射220

9-1. 逻辑功能转换键与一个典型的功能转换键的映射220

9.1.3键符号的背景221

9.1.3.1键符号的设计221

9.1.3.2键符号意义的约定222

9.1.4改变服务器范围的键盘映射222

9.1.4.1改变键代码到键符号的映射222

9.1.4.2改变功能转换224

9.1.5其它键盘管理库程序225

9.1.4.3改变X11.1的功能转换键映射225

9.2.1.1 获取所有的移动事件226

9.2定位器226

9.2.1跟踪定位器移动226

9.2.1.2使用定位器移动条件特性229

9.2.1.3移动历史232

9.2.2管理定位器按钮事件234

9.3边界跨越和键盘聚焦改变事件238

9.2.3改变定位器按钮映射238

9.2.4移动定位器238

9.3.1事件KeymapNotify240

9.4独享键盘和定位器240

9.5键盘缺省值242

9.5.1设置键盘缺省242

9-2. 键盘缺省值的设置——缺省值及范围243

9.5.2获取键盘缺省值244

9.6定位器缺省值244

第十章客户程序通信245

10.1特性和标识符245

10.2与窗口管理程序通信246

10.2.1客户程序的作用246

10.2.1.1建立一个顶层窗口246

10.2.2客户程序设置的特性247

10-1. 窗口管理程序条件特性项248

10.2.2.1XA_WM_NAME248

10.2.2.4应用程序命令及参数249

10.2.2.3 XA_WM_ICON_NAME249

10.2.2.2 XA_WM_CLASS249

10.2.2.5窗口尺寸条件特性——正常的和放大的窗口250

10-2.XSizeHints标志251

10-3. 设置和获取尺寸条件特性的库程序252

10.2.3其它的窗口管理程序条件特性252

10.2.3.1标志字段253

10.2.3.2输入字段和输入聚焦253

10-4. 窗口管理程序条件特性的标志253

10-5. 初始状态条件特性标志254

10.2.3.4图符条件特性254

10.2.3.3初始状态字段254

10.2.3.6临时窗口256

10.2.3.5窗口组256

10.2.5客户程序对窗口管理程序活动的响应257

10.2.4.1 XA_WM_ICON_SIZE257

10.2.4由窗口管理程序设置的特性257

10.3选择区258

10.3.1选择机构258

10.3.2选择区的例子259

10.3.3取得选择区所有权260

10.3.4选择区拥有者的责任261

10.3.5放弃选择区所有权262

10.3.8再谈选择特性和类型263

10.3.7大量数据的传送263

10.3.6请求选择区263

10.4剪裁缓冲区264

10.3.8.1目标标识号264

10-6. 内部特性类型265

第十一章管理用户缺省值266

11-1. 用XGetDefault处理用户缺省值的过程267

11.1使用XGetDefault267

11.2在应用程序里使用X11.2的资源管理程序273

11-2. 用资源管理程序处理缺省值的过程274

11.4管理用户缺省值数据库274

11.3标准几何参数274

11-3. 假设xmail显示276

11.4.1紧密粘结和松散粘结277

11.4.3存贮/访问规则278

11.4.2-name选择项278

11-1. 类设置279

11.5.1将资源放进数据库280

11.4.4资源管理程序值及表示类型280

11.5其它资源管理库程序280

11.5.2资源管理程序标识码281

第十二章一个完整的应用程序282

12.1 basecalc介绍282

12-1. 屏幕上的应用basecalc283

12.2包含文件284

12.3 basecalc的主程序284

12.4获取用户缺省值285

12.4.1 Basecalc的用户缺省值286

12.4.2命令行语法分析286

12.4.3获取数据库290

12.4.4从数据库中获取选择项292

12.6初始化计算器296

12.5打印有关用法的信息296

12.7形成窗口301

12.8选择事件301

12.9处理事件302

12.10画‘按键’305

12.11没有列出的子程序306

第十三章其它程序设计技巧308

13.1屏幕保存器(Screen Saver)308

13.2来自其它主机和结点的访问308

13.2.1增加、删除或者列出主机308

13.2.2允许和禁止访问控制309

13.3窗口层次结构的获取309

13.4关闭方式309

13.5连接关闭操作310

13.6数据管理311

13.6.2相关表311

13.6.1上下文相关管理程序311

13.7随后库程序(The after function)312

13.8坐标变换312

13.9将程序移植到X环境312

13.10 X扩展程序的使用313

13.9.1从X10向X11移植313

第十四章窗口管理315

14.1外观规定315

14.2转送子结构重构请求316

14.3.1 阴影317

14.3重设父窗口317

14-1. 背景阴影318

14-2. 背景阴影的窗口层次318

14.4窗口安全记录319

14-3. 阴影试验的实际效果319

14.5.2设置图符尺寸320

14.5.1读取条件特性320

14-1. 窗口管理程序的条件特性320

14.5窗口管理程序——客户程序通信320

14.6窗口管理程序功能321

14.7基本窗口管理程序322

14-3. 没有兄弟窗口的叠状态的含义322

14-2. 给出兄弟窗口的叠状态的含义322

14.7.1程序的操作323

14-4.winman生成的菜单323

14.7.2主程序说明324

14.7.4选择输入332

14.7.3窗口分层332

14-5. 菜单的窗口层333

14.7.5管理输入333

14.7.6转换区域的颜色334

14.7.9绘制菜单335

14.7.8独享定位器335

14.7.7光标335

14.7.10循环窗口336

14.7.11提升及降低窗口337

14.7.12移动窗口或改变窗口尺寸338

14-6. 拖动窗口轮廓343

14.7.13缩微或复原窗口343

14.7.14建立图符347

14.7.15获取图符尺寸349

14.7.16更新图符表351

14.7.17删除图符352

14.7.18改变键盘焦点352

14.7.19画聚焦窗口外框355

14.7.20执行shell命令356

14.8窗口管理程序未解决的问题357

附录A术语汇编358

附录B X10的兼容性372

XDraw和XDrawFilled372

B-1.顶点标志值373

附录C编写X的扩展程序375

基本协议支持库程序375

连结Xlib376

扩展程序的初始化376

连结程序库376

XESetCreateGC377

XESetCopyGC377

XESetCloseDisplay377

XESetCreateFont378

XESetFreeGC378

XESetFreeFont378

XESetWireToEvent379

XESetEventToWire379

XESetErrorString380

XESetError380

XFindOnExtensionList381

XAddToExtensionList381

XESetFlushGC381

连结Xlib数据结构381

图形批处理382

GC缓存382

分配一个资源ID382

请求的格式384

请求、回答和Xproto.h384

编写扩展的二级程序384

发送协议请求和参数386

数据结构的锁定386

开始编写二级功能程序386

可变长度参数387

应答388

可移植性考虑389

同步调用389

内存的分配和释放389

衍生正确的扩展程序操作码390

附录D应用程序basecalc391

附录E事件参考430

公用结构成分的意义430

ButtonPress,ButtonRelease433

CirculateNotify435

CirculateRequest436

ClientMessage437

ColormapNotify439

ConfigureNotify440

ConfigureRequest442

CreateNotify444

DestroyNotify446

EnterNotify,LeaveNotify447

E-1. 跨越边界事件和窗口的关系449

E-2. 事件的detail成分和窗口关系450

E-1. 定位指针在窗口间移动时所产生的事件451

E-2. 在各种窗口关系情况下,指针从窗口A转移到窗口B时451

产生的边界跨越事件和事件的detail成分451

Expose452

FocusIn,FocusOut454

E-3. 事件FocusIn和FocusOut以及各窗口的关系455

E-4. 事件的detail成分和窗口关系456

E-3a. 事件FocusIn和FocusOut示意图457

E-3b. 事件FocusIn和FocusOut示意图458

GraphicsExpose,NoExpose459

GravityNotify461

KeymapNotify462

KeyPress,KeyRelease464

MapNotify,UnampNotify466

MappingNotify468

MapRequest470

MotionNotify471

PropertyNotify473

ReparentNotify474

ResizeRequest475

SelectionClear476

SelectionNotify477

SelectionRequest478

VisibilityNotify479

E-5. 结构XVisibilityEvent的state值480

选择区约定的状况481

同级通过选择区通信481

简介481

附录F客户程序间通信约定提案481

询问选择区拥有权482

选择区拥有者的责任483

放弃选择区的所有权484

自愿放弃484

强制放弃484

请求一个选择区485

大量数据传送486

选择区标识符的用途487

选择区PRIMARY488

目标标识符488

选择区CLIPBOARD488

选择区SECONDARY488

选择标识符488

选择区特性的用途489

STRING特性489

INDIRECT特性489

F-1. 目标标志符及其含义490

INCREMENTAL特性490

客户程序与窗口管理程序的通信491

客户程序的动作492

建立顶层窗口492

客户程序特性493

XA_WM_NAME493

XA_WM_ICON_NAME494

XA_WM_NORMAL_HINTS494

XA_WM_HINTS495

F-2. 输入方式497

WM_TRANSIENT_FOR498

窗口管理程序特性498

WM_CLASS498

配置窗口499

映射窗口和解除对窗口的映射499

键盘聚焦500

着色图501

缩微窗口图符502

弹出式窗口502

窗口组502

客户程序对窗口管理程序操作的响应503

移动503

重新设置尺寸503

(非)缩微化503

着色图的修改503

键盘聚焦504

ClientMessages504

窗口管理程序约定的状态504

客户程序对会话管理程序操作的响应505

终止505

WM_CLIENT_MACHINE505

终止505

客户程序与会话管理程序的通信505

WM_COMMAND505

特性505

客户程序的作用505

会话管理程序的状态约定506

共享资源的处理506

键盘聚焦506

定位器506

着色图507

致谢507

附录G版本注释508

获得X软件509

附录H其它信息来源509

故障修复510

网络新闻511

其它Xlib书籍512

电话支持513

培训513

工具箱513

H-1. X集团513

自我发现514

X集团613

1991《Xlib程序设计手册》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由刘连芳,廖宏,黄永宁等译 1991 南宁:广西科学技术出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。

高度相关资料

程序设计(1985 PDF版)
程序设计
1985 上海:上海交通大学出版社
PASCAL程序设计(1996年11月第1版 PDF版)
PASCAL程序设计
1996年11月第1版 东南大学出版社
NetBIOS程序设计参考手册( PDF版)
NetBIOS程序设计参考手册
中国康华交通技术开发公司先导技术部
Turbo Pascal6.0面向对象程序设计参考手册与程序设计技巧( PDF版)
Turbo Pascal6.0面向对象程序设计参考手册与程序设计技巧
中国科学院希望高级电脑技术公司
1860TM64位微处理器程序设计手册( PDF版)
1860TM64位微处理器程序设计手册
航空航天部六三一研究所
PASCAL 语言程序设计手册 PLPHA PASCAL(1982 PDF版)
PASCAL 语言程序设计手册 PLPHA PASCAL
1982
APPLEESOFT 程序设计参考手册(1983 PDF版)
APPLEESOFT 程序设计参考手册
1983
程序设计手册与资源开发工具 第3册 Borland C++程序设计手册(1991 PDF版)
程序设计手册与资源开发工具 第3册 Borland C++程序设计手册
1991
fortran5程序设计员参考手册09300015410( PDF版)
fortran5程序设计员参考手册09300015410
苏州电子计算机厂情报室
Ada程序设计(1989 PDF版)
Ada程序设计
1989 北京:人民邮电出版社
程序设计  程序员级(1999 PDF版)
程序设计 程序员级
1999 北京:清华大学出版社
麟游县志(1993 PDF版)
麟游县志
1993 西安:陕西人民出版社
Windows95程序设计(1995 PDF版)
Windows95程序设计
1995 北京:学苑出版社
IBM-PC FORTRAN程序设计手册(1986 PDF版)
IBM-PC FORTRAN程序设计手册
1986 上海:上海科学技术文献出版社
实用C语言编程技巧与应用范例(1993 PDF版)
实用C语言编程技巧与应用范例
1993 北京:海洋出版社