《Windows程序设计 第3版》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:张铮,孙宝山,周天立编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2015
  • ISBN:9787115381620
  • 页数:475 页
图书介绍:本书语言严谨流畅,针对初学者的特点,精心策划、由浅到深,是Windows编程入门到深入的理想参考书。凡是具备C++初步知识的读者都能读懂本书。本书可作为研究Windows程序设计的正式教程,也是一本供自学的从入门到深入的难得教材。

第1章 Windows程序设计基础 1

1.1 必须了解的东西 1

1.1.1 Windows产品概述 1

1.1.2 开发工具Visual C++ 1

1.1.3 Windows资料来源——MSDN 2

1.1.4 Win32 API简介 2

1.2 VC++的基本使用 2

1.2.1 应用程序的类型 3

1.2.2 第一个控制台应用程序 3

1.2.3 API函数的调用方法 4

1.3 本书推荐的编程环境 5

1.4 代码的风格 5

1.4.1 变量的命名 5

1.4.2 代码的对齐方式 6

1.4.3 代码的注释 7

第2章 Win32程序运行原理 8

2.1 CPU的保护模式和Windows系统 8

2.1.1 Windows的多任务实现 8

2.1.2 虚拟内存 8

2.1.3 内核模式和用户模式 9

2.2 内核对象 10

2.2.1 内核对象的引出 10

2.2.2 对象句柄 11

2.2.3 使用计数 11

2.3 进程的创建 11

2.3.1 进程(Process)和线程(Thread) 11

2.3.2 应用程序的启动过程 12

2.3.3 CreateProcess函数 13

2.3.4 创建进程的例子 15

2.4 进程控制 16

2.4.1 获取系统进程 16

2.4.2 终止当前进程 18

2.4.3 终止其他进程 19

2.4.4 保护进程 20

2.5 【实例】游戏内存修改器 20

2.5.1 实现原理 21

2.5.2 编写测试程序 22

2.5.3 搜索内存 22

2.5.4 写进程空间 25

2.5.5 提炼接口 26

第3章 Win32程序的执行单元 27

3.1 多线程 27

3.1.1 线程的创建 27

3.1.2 线程内核对象 30

3.1.3 线程的终止 32

3.1.4 线程的优先级 33

3.1.5 C/C++运行期库 36

3.2 线程同步 37

3.2.1 临界区对象 37

3.2.2 互锁函数 40

3.2.3 事件内核对象 41

3.2.4 线程局部存储(TLS) 43

3.3 设计自己的线程局部存储 46

3.3.1 CSimpleList类 46

3.3.2 CNoTrackObject类 51

3.3.3 CThreadSlotData类 53

3.3.4 CThreadLocal类模板 61

3.4 设计线程类———CWinThread 64

3.5 【实例】多线程文件搜索器 73

3.5.1 搜索文件的基本知识 73

3.5.2 编程思路 75

第4章 Windows图形界面 81

4.1 了解窗口 81

4.2 第一个窗口程序 82

4.2.1 创建Win32工程和MessageBox函数 82

4.2.2 Windows的消息驱动 83

4.2.3 创建窗口 84

4.2.4 分析主程序代码 86

4.2.5 处理消息的代码 90

4.3 一个简单的打字程序 92

4.3.1 使用资源 92

4.3.2 菜单和图标 93

4.3.3 接收键盘输入 95

4.3.4 接收鼠标输入 97

4.3.5 设置文本颜色和背景色 98

4.4 GDI基本图形 98

4.4.1 设备环境(Device Context) 98

4.4.2 Windows的颜色和像素点 100

4.4.3 绘制线条 101

4.4.4 绘制区域 104

4.4.5 坐标系统 105

4.5 【实例】小时钟 108

4.5.1 基础知识——定时器和系统时间 109

4.5.2 时钟程序 111

4.5.3 移动窗口 114

4.5.4 使用快捷菜单 115

第5章 框架管理基础 118

5.1 运行时类信息(CRuntimeClass类) 118

5.1.1 动态类型识别和动态创建 118

5.1.2 DECLARE_DYNAMIC等宏的定义 123

5.2 调试支持 124

5.2.1 基本调试方法 124

5.2.2 调试输出 125

5.2.3 跟踪和断言 126

5.3 框架程序中的映射 127

5.3.1 映射的概念 127

5.3.2 内存分配方式 128

5.3.3 设计管理方式 130

5.3.4 句柄映射的实现 137

5.4 框架程序的状态信息 138

5.4.1 模块的概念 138

5.4.2 模块、线程的状态 139

5.5 框架程序的执行顺序 141

5.5.1 线程的生命周期 141

5.5.2 程序的初始化过程 143

5.5.3 框架程序应用举例 146

第6章 框架中的窗口 147

6.1 CWnd类的引出 147

6.2 窗口句柄映射 148

6.2.1 向CWnd对象分发消息 148

6.2.2 消息的传递方式 151

6.3 创建窗口 153

6.3.1 窗口函数 153

6.3.2 注册窗口类 153

6.3.3 消息钩子 156

6.3.4 最终实现 160

6.3.5 创建窗口的例子 162

6.4 消息映射 164

6.4.1 消息映射表 164

6.4.2 DECLARE_MESSAGE_MAP等宏的定义 166

6.5 消息处理 168

6.5.1 使用消息映射宏 168

6.5.2 消息的分发机制 171

6.5.3 消息映射应用举例 173

6.6 使用Microsoft基础类库 176

6.7 【实例】窗口查看器 178

6.7.1 窗口界面 178

6.7.2 获取目标窗口的信息 183

6.7.3 自制按钮 186

第7章 用户界面设计 190

7.1 对话框与子窗口控件基础 190

7.1.1 子窗口控件运行原理 190

7.1.2 对话框工作原理 193

7.2 使用对话框和控件与用户交互 194

7.2.1 以对话框为主界面的应用程序 194

7.2.2 常用子窗口控件 198

7.2.3 对话框与控件的颜色 199

7.3 通用控件 200

7.3.1 通用控件简介 200

7.3.2 使用通用控件 201

7.3.3 使用状态栏 205

7.3.4 使用列表视图 206

7.3.5 使用进度条 207

7.4 通用对话框 208

7.4.1 “打开”文件和“保存”文件对话框 209

7.4.2 浏览目录对话框 210

7.5 使用框架程序简化界面开发 212

7.5.1 在框架程序中使用对话框 212

7.5.2 CDialog类 215

7.5.3 框架程序中的控件 217

7.5.4 使用向导 217

7.6 【实例】目录监视器 219

7.6.1 目录监视的基础知识 219

7.6.2 实例程序 220

7.6.3 使用SkinMagic美化界面 225

第8章 Windows文件操作和内存映射文件 227

8.1 文件操作 227

8.1.1 创建和读写文件 227

8.1.2 获取文件信息 231

8.1.3 常用文件操作 232

8.1.4 检查PE文件有效性的例子 234

8.1.5 MFC的支持(CFile类) 235

8.2 驱动器和目录 237

8.2.1 驱动器操作 238

8.2.2 目录操作 240

8.3 使用注册表 240

8.3.1 注册表的结构 240

8.3.2 管理注册表 241

8.3.3 注册表API应用举例(设置开机自动启动) 243

8.3.4 ATL库的支持(CRegKey类) 244

8.4 内存映射文件 244

8.4.1 内存映射文件相关函数 245

8.4.2 使用内存映射文件读BMP文件的例子 246

8.4.3 进程间共享内存 251

8.4.4 封装共享内存类CShareMemory 253

8.5 一个文件切割系统的实现 254

8.5.1 通信机制 254

8.5.2 分割合并机制 255

8.5.3 接口函数 259

8.5.4 最终实现 259

8.6 【实例】文件切割器开发实例 263

第9章 动态链接库和钩子 271

9.1 动态链接库 271

9.1.1 动态链接库的概念 271

9.1.2 创建动态链接库工程 271

9.1.3 动态链接库中的函数 273

9.1.4 使用导出函数 274

9.2 Windows钩子 276

9.2.1 钩子的概念 276

9.2.2 钩子的安装与卸载 277

9.2.3 键盘钩子实例 278

9.3 挂钩API技术(HOOK API) 282

9.3.1 实现原理 283

9.3.2 使用钩子注入DLL 283

9.3.3 HOOK过程 284

9.3.4 封装CAPIHook类 288

9.3.5 HOOK实例——进程保护器 294

9.4 其他常用的侦测方法 297

9.4.1 使用注册表注入DLL 298

9.4.2 使用远程线程注入DLL 298

9.4.3 通过覆盖代码挂钩API 303

9.5 【实例】用户模式下侦测Win32 API的例子 306

第10章 TCP/IP和网络通信 311

10.1 网络基础知识 311

10.1.1 以太网(Ethernet) 311

10.1.2 以太网接口堆栈 312

10.1.3 服务器/客户机模型 313

10.2 Winsock接口 313

10.2.1 套接字(Socket)的概念和类型 314

10.2.2 Winsock的寻址方式和字节顺序 314

10.2.3 Winsock编程流程 316

10.2.4 典型过程图 318

10.2.5 服务器和客户方程序举例 319

10.2.6 UDP协议编程 322

10.3 网络程序实际应用 323

10.3.1 设置I/O模式 323

10.3.2 TCP服务器实例 324

10.3.3 TCP客户端实例 331

10.4 截拦网络数据 334

10.4.1 DLL工程框架 335

10.4.2 数据交换机制 335

10.4.3 数据的过滤 337

10.5 【实例】IP封包截获工具IPPack源代码分析 338

10.5.1 主窗口界面 339

10.5.2 注入DLL 341

10.5.3 处理封包 345

第11章 内核模式程序设计与Windows防火墙开发 348

11.1 Windows操作系统的体系结构 348

11.1.1 Windows 2000/XP组件结构图 348

11.1.2 环境子系统和子系统DLL 349

11.1.3 系统核心(core) 350

11.1.4 设备驱动程序 352

11.2 服务 353

11.2.1 服务控制管理器(Service Control Manager) 353

11.2.2 服务控制程序(Service Control Program) 354

11.2.3 封装CDriver类 356

11.3 开发内核驱动的准备工作 360

11.3.1 驱动程序开发工具箱(Driver Development Kit,DDK) 360

11.3.2 编译和连接内核模式驱动的方法 360

11.3.3 创建第一个驱动程序 361

11.4 内核模式程序设计基础知识 362

11.4.1 UNICODE字符串 362

11.4.2 设备对象 362

11.4.3 驱动程序的基本组成 363

11.4.4 I/O请求包(I/O request packet,IRP)和I/O堆栈 364

11.4.5 完整驱动程序 366

11.5 内核模式与用户模式交互 369

11.5.1 扩展派遣接口 369

11.5.2 IOCTL应用举例 370

11.6 IP过滤钩子驱动 374

11.6.1 创建过滤钩子(Filter-hook)驱动 374

11.6.2 IP过滤钩子驱动工程框架 376

11.6.3 过滤列表 378

11.6.4 编写过滤函数 379

11.6.5 注册钩子回调函数 381

11.6.6 处理IOCTL设备控制代码 383

11.7 【实例】防火墙开发实例 384

11.7.1 文档视图 384

11.7.2 文档对象 387

11.7.3 视图对象 388

11.7.4 主窗口对象 390

第12章 3D图形绘制及OpenGL 393

12.1 计算机3D图形渲染技术概述 393

12.1.1 计算机3D图形技术历史 393

12.1.2 Direct3D技术 394

12.2 OpenGL简介 395

12.2.1 OpenGL技术 395

12.2.2 OpenGL技术的特点 395

12.2.3 OpenGL辅助库简介 396

12.3 OpenGL中的基本概念 397

12.3.1 OpenGL中的函数库简介 397

12.3.2 OpenGL函数命名规则 400

12.3.3 OpenGL中的数据类型 400

12.3.4 OpenGL中的投影变换 401

12.3.5 OpenGL中的色彩模式 404

12.3.6 OpenGL中的纹理贴图 406

12.3.7 OpenGL中的光照 409

12.4 OpenGL开发库的获取 412

12.4.1 头文件(.h)的配置 412

12.4.2 动态链接库文件(.dll)的配置 413

12.4.3 静态链接库文件(.lib)的配置 413

12.5 【实例】基于Win32的OpenGL框架 414

12.5.1 建立Win32应用程序 414

12.5.2 头文件设置及全局变量 416

12.5.3 改变OpenGL场景尺寸 417

12.5.4 OpenGL的初始化 417

12.5.5 OpenGL的绘制 418

12.5.6 关闭OpenGL 418

12.5.7 创建OpenGL窗口 420

12.5.8 处理窗口的消息及键盘事件处理 424

12.5.9 WinMain函数 425

12.5.10 本节小结 428

12.5.11 本节源码 428

12.6 采用MFC框架开发OpenGL应用程序的优缺点 434

12.7 【实例】基于MFC中单文档结构的OpenGL框架搭建 435

12.7.1 创建工程 435

12.8.2 添加头文件 435

12.7.3 添加库文件 436

12.7.4 本节小结 441

12.7.5 本节源码 441

12.8 【实例】基本平面图形的绘制 445

12.8.1 绘图所用的函数介绍 445

12.8.2 绘图代码详解 445

12.9 【实例】彩色图形的绘制 447

12.9.1 绘图所用的函数介绍 447

12.9.2 绘图代码详解 447

12.10 【实例】图形的平移、旋转与缩放 448

12.10.1 绘图所用的函数介绍 448

12.10.2 绘图代码详解 449

12.11 【实例】立方体的绘制 451

12.11.1 绘图所用的函数介绍 451

12.11.2 绘图代码详解 451

12.12 【实例】使用GLU库快速绘制常用几何体 452

12.12.1 绘图所用的函数介绍 452

12.12.2 绘图代码详解 453

第13章 音频控制技术及OpenAL 455

13.1 计算机音频控制技术概述 455

13.1.1 计算机音频控制技术历史 455

13.1.2 DirectXAudio技术 456

13.1.3 OpenAL技术 456

13.2 OpenAL简介 456

13.2.1 什么是OpenAL 456

13.2.2 OpenAL的历史 457

13.2.3 OpenAL技术的特点 457

13.2.4 OpenAL支持的音频格式 457

13.3 OpenAL中的基本概念 457

13.3.1 OpenAL中的命名规则 457

13.3.2 OpenAL中的数据类型 458

13.3.3 OpenAL中的缓存Buffer、声源Source、听众Listener 458

13.3.4 OpenAL中的设备Device、环境Context 458

13.4 VC++中的OpenAL程序设计应用实例 459

13.4.1 OpenAL开发库的获取 459

13.4.2 【实例】OpenAL SDKSamples说明 463

13.4.3 【实例】使用OpenAL进行设备枚举 465

13.4.4 【实例】使用OpenAL播放WAV文件 470

附录 MFC结构体系图 474

参考文献 475