本书编写的目的是为学习Windows编程的读者提供一个良好的学习方法,循序渐进,最终使他们有能力独立开发出像Windows防火墙一样複杂的应用程式。
基本介绍
- 书名:Windows程式设计(第二版)
- 作者:王艳平,张铮 编着
- ISBN:10位[7115172323]13位[9787115172327]
- 类别:教材
- 页数:471
- 定价:¥59.00元
- 出版社:人民邮电出版社
- 出版时间:2008-2-1
内容提要
本书首先介绍了Win32程式运行原理和最基本的Win32API编程;然后通过模拟MFC中关键类、全局函式和宏定义的实现,详细讲述了框架程式的设计方法和MFC的内部工作机制,并指出了这些机制是如何对用户程式造成影响的;完整讲述了开发核心驱动和Windows防火墙的过程;最后给出图像处理的基本开发方法。
编辑推荐
本书从“Hello,World”这个简单的例子出发,通过多个实例,由浅入深地讲述Win32API程式设计、类库框架设计、MFC程式设计、核心模式程式设计等,使读者在实践中熟练掌握Windows程式设计模式,并有能力写出完成特定功能的用户应用程式和简单的核心驱动程式。全书语言严谨流畅,针对初学者的特点,精心策划、由浅到深,是学习Windows编程的理想书籍。
目录
第1章 Windows程式设计基础 1
1.1 必须了解的内容 1
1.1.1 Windows产品概述 1
1.1.2 开发工具VisualC++ 1
1.1.3 Windows资料来源——MSDN 2
1.1.4 Win32API简介 2
1.2 VC++的基本使用 2
1.2.1 应用程式的类型 3
1.2.2 第一个控制台应用程式 3
1.2.3 API函式的调用方法 4
1.3 本书推荐的编程环境 5
1.4 代码的风格 6
1.4.1 变数的命名 6
1.4.2 代码的对齐方式 7
1.4.3 代码的注释 8
第2章 Win32程式运行原理 9
2.1 CPU的保护模式和Windows系统 9
2.1.1 Windows的多任务实现 9
2.1.2 虚拟记忆体 9
2.1.3 核心模式和用户模式 10
2.2 核心对象 11
2.2.1 核心对象的引出 11
2.2.2 对象句柄 12
2.2.3 使用计数 12
2.3 进程的创建 12
2.3.1 进程(Process)和执行绪(Thread) 12
2.3.2 应用程式的启动过程 13
2.3.3 CreateProcess函式 14
2.3.4 创建进程的例子 17
2.4 进程控制 18
2.4.1 获取系统进程 18
2.4.2 终止当前进程 20
2.4.3 终止其他进程 21
2.4.4 保护进程 22
2.5 【实例】游戏记忆体修改器 23
2.5.1 实现原理 23
2.5.2 编写测试程式 25
2.5.3 搜寻记忆体 25
2.5.4 写进程空间 28
2.5.5 提炼接口 28
第3章 Win32程式的执行单元 30
3.1 多执行绪 30
3.1.1 执行绪的创建 30
3.1.2 执行绪核心对象 33
3.1.3 执行绪的终止 36
3.1.4 执行绪的优先权 37
3.1.5 C/C++运行期库 40
3.2执行绪同步 41
3.2.1 临界区对象 41
3.2.2 互锁函式 44
3.2.3 事件核心对象 45
3.2.4 信号量核心对象 47
3.2.5 互斥核心对象 50
3.2.6 执行绪局部存储 52
3.3 设计自己的执行绪局部存储 55
3.3.1 CSimpleList类 56
3.3.2 CNoTrackObject类 61
3.3.3 CThreadSlotData类 63
3.3.4 CThreadLocal类模板 72
3.4 设计执行绪类——CWinThread 76
3.5 【实例】多执行绪档案搜寻器 85
3.5.1 搜寻档案的基本知识 85
3.5.2 编程思路 87
第4章 Windows图形界面 94
4.1 了解视窗 94
4.2 第一个视窗程式 95
4.2.1 创建Win32工程和MessageBox函式 95
4.2.2 Windows的讯息驱动 97
4.2.3 创建视窗 98
4.2.4 分析主程式代码 100
4.2.5 处理讯息的代码 104
4.3 一个“简陋”的打字程式 106
4.3.1 使用资源 106
4.3.2 选单和图示 108
4.3.3 接收键盘输入 109
4.3.4 接收滑鼠输入 112
4.3.5 设定文本颜色和背景色 113
4.4 GDI基本图形 113
4.4.1 设备环境 113
4.4.2 Windows的颜色和像素点 116
4.4.3 绘製线条 117
4.4.4 绘製区域 121
4.4.5 坐标系统 122
4.5 Windows记忆体DC 126
4.6 【实例】小时钟 127
4.6.1 基础知识——定时器和系统时间 127
4.6.2 时钟程式 130
4.6.3 移动视窗 134
4.6.4 使用快捷选单 135
第5章 框架管理基础 139
5.1 运行时类信息(CRuntimeClass类) 139
5.1.1 动态类型识别和动态创建 139
5.1.2 DECLARE_DYNAMIC等宏的定义 144
5.2 调试支持 146
5.2.1 基本调试方法 146
5.2.2 调试输出 147
5.2.3 跟蹤和断言 148
5.3 框架程式中的映射 149
5.3.1 映射的概念 149
5.3.2 记忆体分配方式 150
5.3.3 设计管理方式 153
5.3.4 句柄映射的实现 160
5.4 框架程式的状态信息 161
5.4.1 模组的概念 161
5.4.2 模组、执行绪的状态 162
5.5 框架程式的执行顺序 164
5.5.1 执行绪的生命周期 164
5.5.2 程式的初始化过程 167
5.5.3 框架程式套用举例 170
第6章 框架中的视窗 171
6.1 CWnd类的引出 171
6.2 视窗句柄映射 172
6.2.1 向CWnd对象分发讯息 172
6.2.2 讯息的传递方式 175
6.3 创建视窗 177
6.3.1 视窗函式 177
6.3.2 注册视窗类 178
6.3.3 讯息钩子 180
6.3.4 最终实现 185
6.3.5 创建视窗的例子 187
6.4 讯息映射 189
6.4.1 讯息映射表 189
6.4.2 DECLARE_MESSAGE_MAP等宏的定义 192
6.5 讯息处理 194
6.5.1 使用讯息映射宏 194
6.5.2 讯息的分发机制 197
6.5.3 讯息映射套用举例 200
6.6 使用Microsoft基础类库 204
6.7 【实例】视窗查看器 206
6.7.1 视窗界面 206
6.7.2 获取目标视窗的信息 211
6.7.3 自製按钮 215
第7章 用户界面设计 219
7.1 对话框与子视窗控制项基础 219
7.1.1 子视窗控制项运行原理 219
7.1.2 对话框工作原理 222
7.2 使用对话框和控制项与用户互动 224
7.2.1 以对话框为主界面的应用程式 224
7.2.2 常用子视窗控制项 228
7.2.3 对话框与控制项的颜色 229
7.3 通用控制项 230
7.3.1 通用控制项简介 230
7.3.2 使用通用控制项 231
7.3.3 使用状态栏 235
7.3.4 使用列表视图 238
7.3.5 使用进度条 239
7.4 通用对话框 241
7.4.1 “打开”档案和“保存”档案对话框 241
7.4.2 浏览目录对话框 243
7.5 使用框架程式简化界面开发 245
7.5.1 在框架程式中使用对话框 245
7.5.2 CDialog类 248
7.5.3 框架程式中的控制项 250
7.5.4 使用嚮导 250
7.6 【实例】目录监视器 252
7.6.1 目录监视的基础知识 253
7.6.2 实例程式 253
7.6.3 使用SkinMagic美化界面 259
7.7 视窗进程监视器 261
第8章 Windows档案操作和记忆体映射档案 264
8.1 档案操作 264
8.1.1 创建和读写档案 264
8.1.2 获取档案信息 268
8.1.3 常用档案操作 270
8.1.4 检查PE档案有效性的例子 272
8.1.5 MFC的支持(CFile类) 274
8.2 驱动器和目录 276
8.2.1 驱动器操作 276
8.2.2 目录操作 279
8.3 使用注册表 279
8.3.1 注册表的结构 279
8.3.2 管理注册表 280
8.3.3 注册表API套用举例(设定开机自动启动) 282
8.3.4 ATL库的支持(CRegKey类) 283
8.4 记忆体映射档案 284
8.4.1 记忆体映射档案相关函式 284
8.4.2 使用记忆体映射档案读BMP档案的例子 286
8.4.3 进程间共享记忆体 292
8.4.4 封装共享记忆体类CShareMemory 294
8.5 一个档案切割系统的实现 295
8.5.1 通信机制 295
8.5.2 分割合併机制 296
8.5.3 接口函式 300
8.5.4 最终实现 301
8.6 【实例】档案切割器开发实例 306
第9章 动态程式库和钩子 314
9.1 动态程式库 314
9.1.1 动态程式库的概念 314
9.1.2 创建动态程式库工程 314
9.1.3 动态程式库中的函式 316
9.1.4 使用导出函式 317
9.2 Windows钩子 320
9.2.1 钩子的概念 320
9.2.2 钩子的安装与卸载 320
9.2.3 键盘钩子实例 322
9.3 挂鈎API技术(HOOKAPI) 327
9.3.1 实现原理 327
9.3.2 使用钩子注入DLL 327
9.3.3 HOOK过程 328
9.3.4 封装CAPIHook类 333
9.3.5 HOOK实例——进程保护器 340
9.4 其他常用的侦测方法 344
9.4.1 使用注册表注入DLL 344
9.4.2 使用远程执行绪注入DLL 345
9.4.3 通过覆盖代码挂鈎API 351
9.5 【实例】用户模式下侦测Win32API的例子 354
第10章 TCP/IP和网路通信 359
10.1 网路基础知识 359
10.1.1 TCP/IP参考模型 359
10.1.2 乙太网 361
10.1.3 乙太网接口堆叠 363
10.1.4 伺服器/客户机模型 363
10.2 Winsock接口 364
10.2.1 套节字的概念和类型 364
10.2.2 Winsock的定址方式和位元组顺序 364
10.2.3 Winsock编程流程 366
10.2.4 典型过程图 371
10.2.5 伺服器和客户方程式举例 371
10.2.6 UDP协定编程 374
10.3 网路程式实际套用 374
10.3.1 设定I/O模式 375
10.3.2 TCP伺服器实例 376
10.3.3 TCP客户端实例 384
10.4 截拦网路数据 388
10.4.1 DLL工程框架 388
10.4.2 数据交换机制 389
10.4.3 数据的过滤 391
10.5 【实例】IP封包截获工具IPPack原始码分析 392
10.5.1 主视窗界面 392
10.5.2 注入DLL 395
10.5.3 处理封包 399
第11章 核心模式程式设计与Windows防火墙开发 403
11.1 Windows作业系统的体系结构 403
11.1.1 Windows2000/XP组件结构图 403
11.1.2 环境子系统和子系统DLL 404
11.1.3 系统核心 405
11.1.4 设备驱动程式 408
11.2 服务 408
11.2.1 服务控制管理器(ServiceControlManager) 408
11.2.2 服务控制程式 409
11.2.3 封装CDriver类 412
11.3 开发核心驱动的準备工作 417
11.3.1 驱动程式开发工具箱 417
11.3.2 编译和连线核心模式驱动的方法 417
11.3.3 创建第一个驱动程式 418
11.4 核心模式程式设计基础知识 418
11.4.1 UNICODE字元串 418
11.4.2 设备对象 419
11.4.3 驱动程式的基本组成 420
11.4.4 I/O请求包和I/O堆叠 420
11.4.5 完整驱动程式 423
11.5 核心模式与用户模式互动 426
11.5.1 扩展派遣接口 426
11.5.2 IOCTL套用举例 427
11.6 IP过滤钩子驱动 431
11.6.1 创建过滤钩子(Filter-hook)驱动 431
11.6.2 IP过滤钩子驱动工程框架 434
11.6.3 过滤列表 437
11.6.4 编写过滤函式 438
11.6.5 注册钩子回调函式 440
11.6.6 处理IOCTL设备控制代码 442
11.7 【实例】防火墙开发实例 443
11.7.1 文档视图 443
11.7.2 文档对象 446
11.7.3 视图对象 448
11.7.4 主视窗对象 450
第12章 Windows数字图像处理 454
12.1 编程基础 454
12.2 CVector2D类 455
12.3 CGray类的设计 458
12.3.1 图像的载入和保存 460
12.3.2 创建新点阵图 464
12.3.3 设定和获取点阵图像素值 466
12.3.4 绘製矩形和直线 470
……