袁锋 Windows图形编程
本书详细介绍Windows图形系统,包括Win32 GDI和 DirectDraw API的技术细节:设备环境、坐标空间和变换、像素、填充区域、位图、图像处理、文字处理、元文件、打印处理等。本书内容翔实、例子丰富、分析透彻,是Windows编程人员的实用参考书。附带光盘包含书中实例、实用程序、相关信息等。
译者序
前言
第1章 基本技术和知识
第2章 Windows图形系统体系结构
第3章 GDI/DirectDraw内部数据结构
第4章 Windows图形系统窥视
第5章 图形设备抽象
第6章 坐标空间和变换
第7章 像素
第8章 直线和曲线
第9章 区域
第10章 位图基础
第11章 高级位图图形学
第12章 用Windows位图进行图像处理
第13章 调色板
第14章 字体
第15章 文本
本书详细介绍Windows图形系统,包括Win32 GDI和 DirectDraw API的技术细节:设备环境、坐标空间和变换、像素、填充区域、位图、图像处理、文字处理、元文件、打印处理等。本书内容翔实、例子丰富、分析透彻,是Windows编程人员的实用参考书。附带光盘包含书中实例、实用程序、相关信息等。
目录
第1章 基本技术和知识
1. l 用 c/c++进行基本的 windows编程
1.1.1 hello world(版本 1):启动测览器
1. 1.2 hello world(版本 2):直接绘制到桌面
1. 1. 3 hello world(版本 3):创建一个全屏窗口
1. 1.4 hello world(版本4):用directdraw画图
1.2 汇编语言
l.3 程序开发环境
1.3.l 开发与测试系统
1. 3.2 编译器
l.3.3 microsoft平台软件开发工具
1.3.4 microsoft驱动程序开发工具
l. 3. 5 microsoft开发网络库
1. 4 win32可执行文件格式
1. 4. 1 导入目录
1.4.2 导出目录
1.5 microsoft windows操作系统的体系结构
1.5.l 硬件抽象层
1.5.2 微内核
1.5.3 设备驱动程序
.1.5.4 窗口管理和图形系统
l.5.5 执行体
1.5.6 系统服务:windows本身的api
1.5.7 系统进程
1.5.8 服务
1.5.9 环境子系统
l.6 小结
1.6.l 其他参考文献
l.6.2 范例程序
第2章 windows图形系统体系结构
2.1 windows图形系统组件
2.1.1 多媒体
2.1.2 windows视频系统
2.1.3 静态图像
2.1.4 opengl
2.1.5 windows媒体
2.1.6 os内核模式组件
2.1.7 内核模式驱动程序
2.2 gdi体系结构
2.2.l 从gdi32.dll导出的函数
2.2.2 gdi函数分类
2.2.3 gdi系统服务调用
2.2.4 从win32 gdi api到 gdi引擎系统服务调用
2.3 directx体系结构
2.3.1 directx组件
2.3.2 directdraw体系结构
2.4 打印体系结构
2.4.1 win32打印池客户dll
2.4.2 打印池系统服务进程
2.4.3 打印池路由器
2.4.4 打印提供者
2.4.5 打印处理器
2.4.6 语言监视器和端口监视器
2.4.7 打印池过程一瞥
2.5 图形引擎
2.5.l 图形引擎系统服务
2.5.2 图形绘制引擎
2.5.3 图形引擎数据结构
2.5.4 图元变换
2.5.5 字体驱动程序
2.6 显示驱动程序
2.6.l 视频端口驱动程序和视频微端口驱动程序
2.6.2 显示驱动程序函数区域
2.6.3 显示驱动程序初始化
2.6.4 表面绘制调用、钩子和输出
2.6.5 其他驱动程序特性
2.6.6 对directdraw/direct3d显示驱动程序的支持
2.7 打印机驱动程序
2.7.1 微软打印机驱动程序框架结构
2.7.2 打印机驱动程序图形dll
2.7.3 html打印机驱动程序
2.8 小结
2.8.l 范例程序
2.8.2 其他参考文献
第3章 gdi/directdraw内部数据结构
3.i 句柄和面向对象的编程
3.1.l 类和对象
3.1.2 封装和信息隐藏
3.1.3 指针与句柄
3.1.4 全等映射
3.1.5 基于表格的映射
3.1.6 只有句柄是不够的
3.2 解码gdi对象句柄
3.2.l 对象句柄堆是不变的
3.2.2 hgdiobj并不是指针
3.2.3 进程 gdi句柄限制约为 12 000个
3.2.4 系统 gdi句柄限制约为 16 384个
3.2.5 hgdiobj的部分内容为索引值
3.2.6 hgdiobj的部分内容是gdi对象类型
3.3 定位gdi对象句柄表
3.4 解码 gdi对象句柄表
3.4.l pkernel指向页面地
3.4.2 ncount是一个部分选择计数器
3.4.3 nprocess使得gdi句柄绑定到进程
3.4.4 nupper:再次检查句柄
3.4. 5 ntype:内部对象类型
3.4.6 puser指向用户模式数据结构
3.5 gdi对象的用户模式数据结构
3. 5.l 用户模式画刷数据:纯色画刷优化
3.5.2 用户模式区域数据:正方形区域优化
3.5.3 用户模式字体数据:宽度表
3.5.4 用户模式设备上下文数据:存储设置信息
3.6 存取内核模式地址空间
3.7 windbg和gdi调试器扩展
3. 8 gdi内核模式数据结构
3.8.1 gdi引擎中的gdi对象句柄表
3.8.2 gdi引擎中的gdi对象类型
3.8.3 gdi引擎中的设备上下文
3.8.4 gdi引擎 pdev结构
3.8.5 gdi引擎表面
3.8.6 gdi引擎中的设备相关位图
3.8.7 gdi引擎中的dib部分
3.8.8 gdi引擎中的画刷
3. 8. 9 gdi引擎中的画笔
3.8.10 gdi引擎中的调色板
3. 8. 11 gdi引擎中的区域
3.8. 12 gdi引擎中的路径
3.8. 13 gdi引擎中的字体
3.8.14 gdi引擎中的其他gdi对象
3. 9 directdraw数据结构
3.10 小结
3.10.l 其他参考文献
3.10.2 范例程序
第4章 windows图形系统窥视
4.1 win32 api调用窥视
4.1. 1 做一个窥视程序
4.l.2 嵌入窥视dll
4.1.3 钩入api调用链
4.1.4 信息收集
4.1.5 数据转储
4、l、6 窥视控制程序
4.2 win32 gdi窥视
4.2.1 gdi api定义文件
4.2.2 gdi数据解码器
4.2.3 完全 api窥视
4.3 directdraw com接口窥视
4.3.1 虚函数表
4.3. 2 directdraw api定义
4.3.3 虚函数表破解
4.4 gdi系统调用窥视
4. 5 ddi接口窥视
4.6 小结
4.6. 1 其他参考文献
4.6. 2 范例程序
第5章 图形设备抽象
5.1 现代视频显示卡
5.1.l 帧缓冲区
5. 1.2 像素格式
5. 1. 3 双缓存、 z一缓存和纹理
5. 1.4 硬件加速
5.1. 5 显示设备和设置枚举
5. 2 设备上下文
5.2. 1 创建设备上下文
5.2.2 查询设备性能
5.2.3 设备上下文的属性
5.2.4 与窗口关联的设备上下文
5.2.5 多窗口环境下的显示
5. 2.6 获取与窗口关联的设备上下文
5.2.7 公用设备上下文
5.2.8 类设备上下文
5.2.9 专用设备上下文
5.2.10 父设备上下文
5. 2.11 其他设备上下文
5.2.12 信息上下文
5.2. 13 内存设备上下文
5. 2.14 元文件设备上下文
5.3 格式化设备上下文
5.4 样例程序:通用框架窗口
5.4.1 工具栏类
5.4.2 状态窗口类
5.4.3 画布窗口类
5、4.4 框架窗回类
5. 4.5 测试程序
5. 5 范例程序:绘图和设备上下文
5. 5.1 windows更新区域
5. 5.2 wm_paint消息
5. 5.3 可视化窗口绘图消息
5.6 小结
5.6.l 其他参考文献
5.6.2 范例程序
第6章 坐标空间和变换
6.l 物理设备坐标空间
6.2 设备坐标空间
6.3 页面坐标空间和映射模式
6. 3.1 mm_text映射模式
6.3.2 mm_ loengllsh、mm_hienglish映射模式
6.3.3 mm_lometric和 mm_himetric映射模式
6. 3. 4 mm_twips映射模式
6.3.5 mm_isotropic映射模式
6. 3.6 mm_anisotropic映射模式
6.3.7 窗口和视口原点
6.3.8 其他窗口和视口函数
6.4 世界坐标空间
6.4.l affine变换
6.4.2 用于世界坐标变换的 win32 api
6.4.3 使用世界坐标变换
6.5 使用坐标空间
6.6 程序举例:滚屏和缩放
6.7 小结
6.7. 1 其他参考文献
6.7.2 范例程序
第7章 像素
7. 1 gdi对象、句柄和句柄表
7. 1.1 gdi对象存储
7.1.2 gdi对象表
7. 1.3 gdi对象句柄
7.1.4 gdi对象 api
7.1.5 gdi对象泄漏检测
7. 2 裁剪
7. 2.1 裁剪流水线
7.2.2 简单区域
7. 2.3 区域裁剪
7.2.4 元区域
7.2.5 设备上下文中的5个区域
7.2.6 可视化设备上下文区域
7.3 颜色
7.3.1 rgb颜色空间
7.3.2 hls颜色空间
7.3.3 索引颜色和凋色板
7.3.4 高级知识
7. 4 绘制像素
7.5 程序举例:mandelbrot集
7.6 小结
7.6.l 其他参考文献
7.6.2 范例程序
第8章 直线和曲线
8. 1 元光栅操作
8.2 背景模式与背景颜色
8.3 画笔
8.3. 1 逻辑画笔对象
8.3.2 库存画笔
8.3.3 简单画笔
8.3.4 扩展画笔
8.3.5 查询逻辑画笔
8. 3. 6 gdi画笔对象的封装类
8.4 直线
8.5 bezier曲线
8.5.1 polydraw函数
8.5.2 其他bezier曲线的定义:通过所有的控制点
8.6 弧线
8.6.l 用角度来指定弧线:anglearc
8.6. 2 使用内框架画笔来画弧线
8.6.3 把弧线转换成bezier曲线
8.7 路径
8. 7.1 构造路径
8.7.2 查询路径数据
8.7.3 路径对象变换
8.7.4 使用路径画图
8.7. 5 把路径转换成区域
8.8 例子:用自己定义风格的线做图
8.9 小结
8.9.l 其他参考文献
8.9.2 范例程序
第9章 区域
9.l 画刷
9. 1.l 逻辑画刷对象
9.1.2 库存画刷
9.1.3 自定义画刷
9.1.4 系统颜色画刷
9.1.5 logbrush结构
9.2 矩形
9.2.l 作为数据结构的矩形
9.2.2 绘制矩形
9.2. 3 边界线和控制点的绘制
9.3 椭圆、弦、饼状图以及圆角矩形
9.4 多边形
9.5 闭合路径
9. 6 区域
9.6.l 创建区域对象
9.6.2 区域对象上的操作
9.6.3 使用区域绘图
9.7 渐变填充
9.7.l 矩形的渐变填充
9.7.2 用渐变填充创建3d按钮
9.8 实际中的区域填充
9.8.1 半透明填充
9.8.2 hls颜色空间的可移植渐变填充
9.8.3 径向渐变填充
9.8.4 纹理和位图填充
9.8.5 图案填充
9.9 小结
9.9.l 其他参考文献
9.9.2 范例程序
第10章 位图基础
10.l 设备无关的位图格式
10.1.1 bmp文件格式
10.1.2 压缩设备无关位图
10.1.3 分散的设备无关位图
10.2 dib类
10.3 显示dib
10.3.1 stretchdibits
10.3.2 源矩形
10.3.3 目标矩形和拉伸模式
10.3.4 颜色格式转换
10.3.5 光栅操作
10.3.6 stretchdibits函数的例子
10.3.7 setdibitstodevice
10. 4 内存设备上下文
10. 5 设备相关位图
10.5.1 createbitmap
10.5.2 createbitmapindirect
10.5. 3 ddb的 getobject调用
10. 5.4 creat compatible bitmap和create discardable bitmap
10.5.5 createdibitmap
10.5. 6 loadbitmap
10.5.7 在dib和ddb间拷贝位图
10. 5.8 存取原始的ddb像素阵列
10.6 使用 ddb
10. 6.l 显示ddb
10.6.2 在菜单中使用位图
10.6.3 用位图作为窗口背景
10.7 dib段
10. 7.1 createdibsection
10.7.2 dib段类
10.7.3 对 dib段调用 getobjecttype/getobject
10.7.4 getdibcolortable/setdibcolortable
10. 7.5 使用dib段:设备无关的绘制
10.7.6 使用dib段:高分辨率绘制
10.8 小结
10. 8.l 其他参考文献
10.8.2 范例程序
第11章 高级位图图形学
11.l 三元光栅操作
11.1.1 光栅操作的编码
11.1. 2 三元光栅操作图表
11.1.3 常用的光栅操作
11.2 透明位图
11. 2. 1 平行四边形位块传送: plgblt
11.2.2 四元光栅操作: maskblt
11.2.3 颜色键控法: transparentblt
11.3 不用屏蔽位图实现透明度
11.3.l 用几何图形作为屏蔽
11.3.2 用裁剪作为屏蔽
11. 3.3 预先生成图像
11.4 alpha混合
11.4.l 简单常量 alpha混合
11.4.2 位图的淡入谈出
11.4.3 层叠窗口
11.4.4 alpha通道: airbrush
11. 4.5 模拟alpha混合
11.5 小结
11.5.l 其他参考文献
11.5.2 范例程序
第12章 用windows位图进行图像处理
12.l 通用像素存取
12.2 位图affine变换
12.3 快速专用位图变换
12.4 位图颜色变换
12.4.l 将位图转换为灰度位图
12.4.2 gamma校正
12.5 位图像素变换
12. 5.l 通用像素变换类
12.5.2 通用通道分离类
12. 5.3 通道分高举例
12.5.4 直方图
12.6 位图空间过滤器
12.6.l 平滑过滤器和锐化过滤器
12.6.2 边缘检测和浮雕过滤器
12.6.3 变形过滤器
12.7 小结
12.7.l 其他参考文献
12.7.2 范例程序
第13章 调色板
13.l 系统调色板
13.1.l 显示设置
13.1.2 查询系统调色板
13.1.3 静态颜色
13.2 逻辑调色板
13.2.l 缺省调色板
13.2.2 半色调调色板
13.2.3 创建自定义调色板
13.3 调色板消息
13.3.1 wm_querynewpalette消息
13.3.2 wm_paletteischanging消息
13. 3.3 wm_palettechanged消息
13. 3.4 测试程序
13.4 凋色板和位图
13.4.l 设备相关位图和调色板
13.4.2 设备无关的位图和调色板
13. 4. 3 dib颜色表中的调色板索引
13.4.4 dib段和调色板
13.5 颜色的量化
13.6 减少位图颜色深度
13. 7 小结
13. 7.l 其他参考文献
13.7. 2 范例程序
第14章 字体
14. 1 什么是字体
14.1.l 字符集和代码页
14.1. 2 图元
14. 1.3 字体
14.1.4 字体风格和字体族
14.2 位图字体
14.3 向量字体
14. 4 truetype字体
14. 4.1 truetype字体文件格式
14. 4.2 字体头
14.4. 3 最大需求表
14.4.4 字符到图元索引的映射
14.4.5 位置索引
14.4.6 图元数据
14.4.7 图元指令
14.4.8 水平规格(hhea和htmx表)
14.4.9 字距调整
14.4. 10 os/2和 windows规格
14.4.11 其他表
14. 4. 12 truetype字体集
14.5 字体的安装和内嵌
14.5.l 字体资源文件
14.5.2 安装公用字体
14.5.3 安装专用字体和 multiple masteropentype字体
14.5.4 从内存映像中安装字体
14.5.5 字体的内嵌
14.5.6 系统字体列表
14.6 小结
14. 6.l 其他参考文献
14.6.2 范例程序
第15章 文本
15.l 逻辑字体
15.1.1 微软印刷学术语
15.l.2 库存字体
15.1.3 创建逻辑字体
15.1.4 逻辑字体到物理字体映射
15.1.5 panose字面匹配
15.2 查询逻辑字体
15.2.l 位图字体和矢量字体的度量
15.2.2 true/opentype字体度量
15.2. 3 浏览logfdnt和字体度量
15.2.4 字体度量的准确度
15.3 简单文本绘制
15.3.l 对齐文本
15. 3.2 从右到左的布局与阅读方式
15.3.3 字符附加量和分割符附加量
15.3.4 字符宽度
15.4 高级文本绘制
15.4.l 字符到图元的映射
15. 4.2 字距调整
15.4.3 布置字符
15.4.4 扩展的文本绘制
15.4.5 uniscribe
15.4.6 图元存取
15.5 格式化文本
15.5.l 带制表符的文本绘制
15.5.2 简单段落格式化
15.5. 3 设备无关的文本格式化
15.6 文本特效
15.6.l 文本着色
15.6.2 文本风格
5.6. 3 文本几何特性
15.6.4 文本做位图
15. 6. 5 文本做曲线
15.6. 6 文本做区域
15. 7 小结
15.7. 1 其他参考文献
15. 7. 2 范例程序
第16章 元文件
16.l 元文件基础
16. 1.l 创建增强元文件
16.1.2 播放增强元文件
16.1.3 查询增强元文件
16. 1.4 增强元文件变换
16. 2 增强元文件内部结构
16. 2. 1 emf记录
16. 2.2 emf记录类型分类
16. 2.3 解码emf记录
16.2.4 emf中的简单gdi对象
16.2.5 emf中的位图
16.2.6 emf中的区域
16.2.7 emf中的路径
16.2. 8 emf中的调色板
16. 2.9 emf中的坐标空间
16. 2. 10 emf中的绘制命令
16. 2.11 emf设备无关性
16.3 枚举 emf
16.3.l 用于emf枚举的c++类
16. 3.2 emf回放中的慢动作
16.3.3 跟踪emf回放过程
16.3. 4 动态改变emf
16.3.5 从emf中派生emf
16.4 emf做编程工具
16.4. 1 emf反编译器
16. 4.2 捕获emf打印池文件
16.5 小结
16.5.l 其他参考文献
16. 5. 2 范例程序
第17章 打印
17.l 理解打印池程序
17.1. 1 打印进程
17. 1.2 打印机控制语言
17.1.3 直接打印到端口
17.1.4 通过打印池打印
17.1.5 emf打印处理器
17.1.6 枚举打印机
17. 1.7 查询打印机
17.1.8 设置打印机驱动程序
17.2 用gdi实现基本打印功能
17.2.l 打印通用对话框
17.2.2 创建打印机设备上下文
17.2.3 查询打印机设备上下文
17.2.4 打印任务的轮廓
17.3 打印设计
17.3.1 统一逻辑坐标空间
17.3.2 纸张模拟
17.3.3 多页、多列显示
17.3.4 多页打印
17. 3.5 通用打印类
17.4 在打印机设备上下文中绘制
17.4.l 坐标空间单位
17.4.2 文本
17.4.3 位图
17.4.4 jpeg图像打印
17.5 小结
17.5.l 其他参考文献
17.5.2 范例程序
第 18章 directdraw和 direct3d立即模式
18.l 组件对象模型
18.1.1 com接口
18.1.2 com类
18.1.3 创建 com对象
18. 1.4 hresult
18.1.5 directx和 com
18. 2 directdraw基础
18.2.l idirectdraw7接口
18.2.2 idirectdrawsurface7接口
18.2.3 在directdraw表面上绘制图形
18.2.4 颜色匹配
18.2.5 idirectdrawclipper接口
18.2.6 简单 directdraw窗口
18.3 建立direct图形库
18.3.l 像素绘制
18. 3.2 直线绘制
18. 3.3 区域填充
18.3.4 裁剪
18.3.5 后台表面
18.3.6 用彩色键控实现透明
18. 3.7 字体与文本
18.3.8 这并不只是一个游戏
18.4 direct3d立即模式
18.4.l 创建direct3d立即模式环境
18.4.2 处理窗口大小变化
18.4.3 两步绘制
18.4.4 将direct3d放在窗口中
18.4.5 纹理表面
18.4.6 direct3d立即模式举例
18.5 小结
18.5.l 其他参考文献
18.5.2 范例程序
译者序
当我第一次接过这本书的英文版样书时,我就惊诧于这本书是一个中国人写的。
本书作者 Feng Yuan是一位留美学者,软件工程学博士,毕业于南京大学。在过去的四年中,他在HP温哥华研究与开发实验室从事DeskJet打印机驱动程序的开发。本书正是在此基础上写作的,它凝结了作者多年实际开发的汗水。
本书的内容覆盖了Windows的图形系统,从Win32API的表层到最底层的显示和打印机的驱动程序,特别集中在 Win32 GDI和 DirectX的 DirectDraw部分。它主要集中讨论了Windows NT4和Window 2000平台,还覆盖了如下一些内容:Windows图形系统的体系结构、GDI和Direct-Draw的数据结构、绘图设备、GDI对象、像素、直线和曲线、填充区域和位图、逻辑字体和文本格式化、元文件、打印和打印池、DirectDraw接口、GDI调试工具、EMF反编译器、图像绘制和3D效果。
本书的最大特点是其实用性。它不仅讲述了这些内容,重要的是,它还给出了实际编程中用到的分析问题和解决问题的方法。本书是从实际工作中收集而来的,而不是利用其他参考文献中编辑而成的,并且它提供了许多可以直接重用的函数、C++类、示例程序源代码,这对于从事Windows图形编程工作的人员来说,如图形软件工程师,排版系统、中文办公软件的工程师,以及对Windows内幕感兴趣的程序员,大多数是可以直接使用的。本书是一本名副其实的Windows图形编程宝典。
本书由英宇工作室的邓浩组织翻译,参加翻译的人员还有裘强、薛赛男、林碧森、欧阳宇、易重英、陆绍飞、牛韬、王安鹏、祁力、徐继伟、谢君英、刘舫、李超、阳爱军、朱翠莲。郭增元、杨青青、李娜。还有部分人员参与了录人和排版工作,他们是温春美,李明生。林江勇、武堂、王明举、郭茜茜。
我们一直在尽力将本书翻译好,但由于时间仓促,加之译者水平有限,书中肯定会有不少疏漏,恳请读者指正。我们接收广大读者意见的邮箱为: yingu@263.net。
2001年12月
前言
一本关于Windows编程的新书,要想真正有价值,它应该是深人的、完整的、最新的、正确的、基于实践的和对读者有帮助的。
一本深人的书应该从API的底层谈起,一直讲到API的设计原理、内部数据结构以及实现方法。它应该为你提供检查和探测工具。
一本完整、最新的书,应该把注意力集中在迄今为止对Win32 API的最好实现--Windows 2000上(它将是微软将来的操作系统的基础),并覆盖它的所有新特性。
一本正确的书,应该是对Win32 API功能进行实际探索,并验证所有细节后书写的。只阅读微软的开发文档显然是不够的,因为这些文档只是MAP的概要,并且有些不完全的。过时的甚至是模棱两可的信息。
一本实用的、有用的书,对于程序员和软件工程师来说,不应该只描述API和提供一些简单例子,而应该解决现实世界的问题,提供可重用的生成模块,提供有用的工具,并鼓励读者写出很专业的程序。
特别是,这种书一般都需要阐述Win32 GDI,或者Windows图形编程,它是所有Windows编程的基础生成部分。到目前为止,讲解最深的可能是 Matt Pietrek的书,它讨论了 Windows3.1GDI的内部工作原理。关于GDI最完整和最新的描述由微软的 MSDN库提供。 CharlesPetzold最有名的一本书《Programming Windows》,第五版,其中有一半的篇幅讲解 Windows 98GDI编程。
但是因为所有的Windows编程中经常需要处理Windows GDI,所以,需要一本更深入、更完整、更新、更正确和更有用的书来讲解Windows GDI。这就是本书的写作目标。
本书内容
本书讲解如何用 Win32 GDI API进行图形编程,同时介绍了 DirectDraw和 Direct3D立即模式。它覆盖了在所有Win32平台上实现的共同特性,仅在Windows NT/2000下实现的纯32位特性,及在 Windows 2000和 Windows 98中增加的最新特性。例如,对 alpha混合、透明位传输、渐变填充。从右到左的阅读顺序、分层窗口、向打印机发送JPEG/PNG图像等都进行了详细讲解。
本书是关于Windows编程的,并更深一步介绍这些东西是如何实现的,因此,使读者可以更高效、自信地使用 Win32 API。
本书教你全面地、分析地阅读Win32文档,尽力理解 Win32 API设计和实现者的思路,并用逻辑推理和实验来完整理解Win32 API,甚至找出文档中遗漏的信息或错误的信息。
本书教你如何使用编程工具来理解Win32API。更重要的是,本书示范了如何建立你自己的工具,经常使用核心硬件级的系统编程技术,并设计一些有趣的实验对Win32 API的没有文档记载的世界进行探索。开始的几章可以作为系统级Windows编程书,也可用于Windows编程的其他领域。
本书教你创建可重用的生成块以方便实际使用。除了一些简单的测试和示例程序外,本书包含了大量的可重用函数、C++类、驱动程序、工具和重要程序,可用于产品级的 Windows程序。它开发了一个面向对象的 Windows编程C++类库,支持简单的窗口、SDI窗口、MDI窗口、对话框、工具栏、状态窗口、属性表、子类、通用对话柜等等。它提供一些类,处理DIB/DDB/DIB段、EMF绘制、图像处理、颜色量化、错误扩散半色调,JPEG图像解码/编码、字体文件解码、字体嵌人、PANOSE字体匹配、图元绘制、3D文本、设备无关的多重页面布局、DirectDraw封装、 Direct3D IM封装等。
本书的代码不依赖于 Microsoft FoundationClass,或者任何的第三方类库,可用于任何C++程序。所有这些类命名为以K打头,因此你可以很容易地将他们与MFC、ATL、OWL或者你自己的类库混合使用。
本书组织结构
本书覆盖了Windows图形编程的三个层次:实现层、API层和应用层。
实现层覆盖了 Win32 GDI API和 DirectX COM接口背后的内容,它是 Window图形引擎和Win32子系统客户DLL没有文档记载的领域。第2、3、4章覆盖了实现层的所有内容,为理解API层建立一个坚固的基础。
API层提供了 Win32 GDI API、 DirectDraw以及一些 Direct3D IM的精辟的、准确的、一步一步的描述。应用层建立在 API层之上,用于解决现实领域的问题、实现可重用函数、C++类和重要程序。API层和应用层根据一些主题一起讨论。一般说来,一章的开始部分覆盖API层,接着转移至与现实应用相关的程序。对于讲述更复杂的主题(如位图),用一章覆盖基本的主题,两章覆盖更高级的应用。
第1章"基本技术和知识",回顾了基本的Windows编程技术,这些在本书的后面将是有用的。它包括基本的Windows编程、Intel汇编语言、程序开发环境、Win32可执行文件格式以及Windows操作系统的体系结构。我最喜欢的部分是API"钩子",它通过重写Win32模块的导入/导出目录来实现。
第2章"Window图形系统体系结构"从整体上浏览了Windows图形系统,从Win32子系统DLL一直到图形设备驱动程序。它讲述了Windows图形系统组件、GDI体系结构、DirectX体系结构、打印子系统体系结构、图形引擎、显示驱动程序和打印机驱动程序。我最喜欢的部分是对系统服务调用的描述,它在用户模式GDI实现代码和核心模式图形引擎之间架起了一座桥梁,列出没有文档记载的系统服务调用(从GDI32.DLL、USER32.DLL、NTDLL.DLL和WIN32K.SYS)的工具和一个简单的打印机驱动程序,它能生成带嵌入位图的HTML页面。
网载 2013-07-04 14:50:14
|
相關閱讀 |
|
推薦文章 |
暫無評論。
稱謂:
内容:
驗證:
返回列表