《精通Windows程序设计 基于Visual C++实现》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:朱娜敏,魏宗寿,李红等编著
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2009
  • ISBN:9787115196736
  • 页数:470 页
图书介绍:本书大部分应用程序都是基于MFC的C++方式的,一共分为五篇:Windows编程基础、绘图程序设计与消息、Windows界面、文档、视图设计与调试、数据库、网络通信与ActiveX控件、Windows内部处理,循序渐进的讲述了Windows编程技术,从基本原理到具体实践都进行了详细的阐述,并对具体知识点进行了详细的讲解。本书的特点是全面详细地介绍了Windows编程,突出了编程的原理性与实用性。本书在帮助开发人员理解原理的基础上还应用了大量的实例,详细介绍了各原理的应用,以及代码编写技巧,方便开发人员应用实践。

第1篇 Windows编程基础 2

第1章 Windows程序设计基础知识 2

1.1 Windows程序设计知识简述 2

1.1.1 Windows编程特点 2

1.1.2 Windows应用程序的编程模型 3

1.1.3 Windows程序基本结构 4

1.2 Windows程序的发展 4

1.2.1 传统的Windows编程 4

1.2.2 Windows与API函数 5

1.2.3 Windows与Win32API 5

1.2.4 Windows与面向对象 6

1.2.5 Windows对象与MFC对象 6

1.3 Windows编程应用工具 7

1.3.1 Windows编程工具简介 7

1.3.2 为何使用Visual C++ 8

1.3.3 Visual C++6.0的安装 8

1.3.4 Visual C++6.0集成开发环境 9

1.3.5 Visual C++6.0的基本使用 9

1.4 【实例】一个显示窗口的典型的Windows应用程序 10

1.4.1 创建应用程序 10

1.4.2 Windows程序生命期 12

1.4.3 Windows程序要素简介 12

1.4.4 Winmain()入口函数 13

1.4.5 WndProc()窗口处理函数 13

1.4.6 进队消息与不进队消息 14

1.4.7 设备描述表 14

1.4.8 应用程序的退出 15

1.5 【实例】建立第一个控制台应用程序 15

1.5.1 创建工程 15

1.5.2 控制台应用程序说明 16

1.5.3 编译并链接源程序 16

1.5.4 应用Visual C++调试器调试程序 17

1.6 Windows程序设计注意事项 17

1.6.1 Windows应用程序中的调用关系 18

1.6.2 Windows应用程序多任务处理 18

1.7 Windows程序常用事项 18

1.7.1 匈牙利式命名规则 18

1.7.2 代码的对齐 19

1.7.3 应用注释 20

1.7.4 MSDN的应用 21

1.8 小结 21

第2章 Win32编程基础 22

2.1 Win32程序开发流程 22

2.2 【实例】用Win32API编写一个简单的Windows程序 23

2.2.1 创建应用程序 23

2.2.2 调用头文件说明 23

2.2.3 WinMain()入口函数 23

2.2.4 API函数的调用 24

2.3 Win32编程思想 25

2.3.1 事件驱动的程序设计思想 25

2.3.2 消息和消息处理机制思想 25

2.3.3 动态链接技术 26

2.3.4 句柄 27

2.3.5 其他Win32编程思想 28

2.4 【实例】一个典型的Win32程序 28

2.4.1 程序入口WinMain 28

2.4.2 窗口类的注册与产生 29

2.4.3 消息循环 30

2.4.4 窗口函数的处理 30

2.4.5 消息映射 31

2.4.6 对话框的运行 32

2.4.7 模块定义文件 33

2.4.8 资源描述文件 33

2.5 进程与线程 34

2.5.1 内核对象 34

2.5.2 基于Win32的进程模式 35

2.5.3 进程的属性与资源 36

2.5.4 进程与线程的相关性 37

2.5.5 创建进程(CreatProcess)函数 37

2.5.6 【实例】进程的创建 38

2.5.7 控制与终止某进程 39

2.5.8 与进程相关的API函数 40

2.6 Win32程序的空闲处理 40

2.7 小结 41

第3章 创建Windows应用程序 42

3.1 创建Windows应用程序的方法 42

3.1.1 底层编程法 42

3.1.2 MFC编程法 42

3.1.3 高层编程法 43

3.2 【实例】建立一个简单的MFC应用程序 43

3.2.1 创建应用程序 43

3.2.2 MFC应用程序对象 44

3.2.3 建立框架窗口对象 45

3.2.4 绘制窗口 47

3.2.5 消息映射处理 48

3.2.6 有关字符串的定义 48

3.3 了解Windows应用程序的类型 49

3.4 关于AppWizard与ClassWizard 49

3.4.1 AppWizard应用程序向导 49

3.4.2 ClassWizard类向导 50

3.5 【实例】创建第一个MFCAppWizard工程—MDI应用程序 51

3.5.1 生成MDI应用程序框架 51

3.5.2 浏览应用程序文件及工作区中的项目 51

3.5.3 调试应用程序 52

3.6 关于MDI的说明 53

3.7 关于MDI应用程序框架的组成说明 53

3.7.1 应用程序对象 54

3.7.2 窗口对象 55

3.7.3 视图对象 55

3.7.4 文档对象 56

3.7.5 MFC的主要类及其层次关系 57

3.8 MDI应用程序的执行流程 57

3.9 MDI工程的相关文件说明 58

3.9.1 工程文件 58

3.9.2 资源文件 59

3.9.3 预编译文件 59

3.9.4 注册表项目文件 59

3.9.5 帮助文件 60

3.10 小结 60

第2篇 Windows绘图程序设计与消息 62

第4章 Windows应用程序输入设备 62

4.1 鼠标 62

4.1.1 鼠标设备基础知识 62

4.1.2 鼠标光标的热点 63

4.1.3 客户区与非客户区鼠标消息 63

4.1.4 鼠标跟随原理与WM_MOUSEMOVE 64

4.1.5 【实例】鼠标消息的捕获与应用 65

4.1.6 鼠标光标形状的设置 66

4.1.7 【实例】不同区域显示不同光标 67

4.2 键盘 69

4.2.1 键盘设备基础知识 70

4.2.2 接收键盘输入焦点消息及处理 70

4.2.3 获取击键消息 71

4.3 【实例】从键盘读取输入 72

4.3.1 为键盘数据建立存储区域 72

4.3.2 读取击键 72

4.3.3 键入的字符保存并显示 73

4.3.4 运行程序并键入字符测试 73

4.3.5 程序拓展—文档的永久保存 74

4.4 计时器 74

4.4.1 设置计时器 74

4.4.2 WM_TIMER消息 75

4.4.3 清除计时器WM_KILL 75

4.4.4 【实例】设置2个计时器程序 75

4.5 小结 79

第5章 Windows窗口中绘图 80

5.1 图形设备接口GDI 80

5.1.1 设备描述表类介绍 80

5.1.2 设备描述表类的应用方法 82

5.1.3 GDI绘图对象 83

5.1.4 【实例】用GDI绘图 86

5.2 绘图模式 87

5.2.1 绘图模式概述 88

5.2.2 【实例I绘图模式的应用—橡皮筋矩形的实现 88

5.3 Windows中的映射模式 90

5.3.1 映射模式概述 91

5.3.2 【实例】映射模式的应用 92

5.4 坐标转换 93

5.4.1 逻辑坐标与设备坐标 94

5.4.2 坐标转换的函数应用 95

5.4.3 【实例】坐标转换的应用 95

5.5 窗口与视口 96

5.5.1 概念介绍 96

5.5.2 窗口与视口的原点 97

5.5.3 窗口与视口的相关函数及其应用 97

5.6 窗口重绘函数 99

5.6.1 OnDraw与OnPaint函数 99

5.6.2 添加重绘资源 101

5.7 图形文件的操作 102

5.7.1 创建新文档 102

5.7.2 保存图形文件 102

5.7.3 打开图形文件 103

5.7.4 其他相关函数 103

5.8 【实例】鼠标绘制直线与圆形 104

5.8.1 绘图原理与WM_LBUTTONDOWN、WM_LBUTTONUP 104

5.8.2 集合数组类的应用—图形的保存 107

5.8.3 图形的重绘 108

5.8.4 坐标点的平移—图形拉伸效果的实现 109

5.8.5 实例拓展 110

5.9 小结 110

第6章 Windows应用程序窗口消息 111

6.1 窗口管理 111

6.1.1 C++窗口对象和Windows窗口对象 111

6.1.2 创建窗口 111

6.1.3 定位窗体 112

6.1.4 销毁窗体 113

6.2 主要编程对象—窗口 113

6.2.1 窗口结构与类型 114

6.2.2 窗口关系 115

6.2.3 窗口应用框架 117

6.3 窗口消息映射 117

6.3.1 Windows消息的分类 117

6.3.2 消息的结构 120

6.3.3 消息处理 120

6.3.4 窗口消息映射表 121

6.3.5 窗口消息的定位 122

6.3.6 消息映射宏的种类 122

6.3.7 消息的预处理 123

6.4 窗口消息处理机制 124

6.4.1 标准窗口消息处理 124

6.4.2 命令消息处理 125

6.4.3 消息反射处理 125

6.4.4 更新命令处理 126

6.4.5 自定义窗口消息 126

6.4.6 自定义命令 128

6.4.7 Post与Send消息 128

6.4.8 两进程窗口通信的注册消息 129

6.4.9 线程消息处理 130

6.4.10 跨进程消息处理 131

6.4.11 【实例】跨进程消息交换数据 132

6.5 【实例】MFC的窗口过程 133

6.5.1 MFC窗口过程的指定 133

6.5.2 对Windows消息的接收和处理 135

6.5.3 对命令消息的接收和处理 136

6.5.4 对控制通知消息的接收和处理 140

6.5.5 对更新命令的接收和处理 141

6.6 小结 144

第3篇 Windows界面设计与调度技巧 146

第7章 用户窗口界面的设计 146

7.1 Windows控件的设计与应用 146

7.1.1 Windows控件简介 146

7.1.2 静态控件 147

7.1.3 按钮 148

7.1.4 编辑框 151

7.1.5 列表框 153

7.1.6 组合框 156

7.1.7 滚动条 157

7.1.8 列表视图控件 158

7.1.9 树形控件 158

7.1.10 旋转、进度条和滑块控件 160

7.1.11 位图按钮、图像列表控件 162

7.1.12 自定义控件的颜色 163

7.2 菜单 165

7.2.1 菜单基础知识 166

7.2.2 创建菜单应用程序 166

7.2.3 创建上下文快捷/弹出式菜单 168

7.2.4 菜单应用程序加入对话框窗口 169

7.3 工具栏 170

7.3.1 创建工具栏 170

7.3.2 工具栏与应用程序相关联 172

7.3.3 工具栏的可见性 172

7.3.4 停靠栏 174

7.3.5 组合框加入工具栏 175

7.4 状态栏 176

7.4.1 创建普通状态栏 176

7.4.2 高级状态栏 177

7.4.3 在对话框中设置状态栏 180

7.5 对话框的设计 181

7.5.1 对话框原理介绍 182

7.5.2 模式对话框与无模式对话框的设计 182

7.5.3 系统通用对话框的应用 183

7.5.4 自定义对话框形状 188

7.5.5 对话框与控件的数据交互 188

7.5.6 对话框与文档视图的数据交互 190

7.6 【实例】将文本框与组合框加入列表视图控件实例 190

7.6.1 准备知识 190

7.6.2 创建结构体 196

7.6.3 创建所需相关类 197

7.6.4 功能实现 198

7.7 小结 199

第8章 Windows文件系统与序列化 200

8.1 文件CFile类 200

8.1.1 创建、打开与关闭文件 201

8.1.2 文件的读、写 202

8.1.3 移动文件指针 203

8.1.4 临时文件的操作 204

8.1.5 监控目录,搜索文件 205

8.1.6 文件属性的获取和更改 206

8.1.7 文件的分割与合并 208

8.1.8 锁定文件 209

8.1.9 CFile的派生类 210

8.2 文件的序列化 210

8.2.1 序列化基础 211

8.2.2 序列化函数Serialize 214

8.2.3 自定义可序列化类 217

8.3 【实例】普通文件的编辑器 218

8.3.1 项目框架程序 218

8.3.2 初始化文档数据 219

8.3.3 文件串行化处理 220

8.3.4 文本数据的显示 220

8.3.5 文本字体的设定 222

8.4 小结 223

第9章 文档与视图 224

9.1 文档与视图的概述 224

9.1.1 文档与视图的关系 224

9.1.2 文档与视图的接口 225

9.1.3 SDI与MDI应用程序的区别 225

9.2 文档/视图框架结构的关系 226

9.2.1 MFC各对象间的关系 226

9.2.2 文档类 227

9.2.3 视图类 227

9.2.4 框架窗口类 228

9.2.5 文档模板类 228

9.2.6 多文档 229

9.2.7 多视图 230

9.2.8 拆分窗口 230

9.2.9 文档/视图的滚动处理 231

9.3 文档类 233

9.3.1 文档的生命周期 233

9.3.2 文档的操作与函数的重载 234

9.3.3 设置文档修改标志 235

9.3.4 文档的序列化保存 235

9.3.5 关闭并销毁文档 235

9.4 视图类 235

9.4.1 视图类的函数 236

9.4.2 初始化社图 236

9.4.3 视图与文档的数据交互 236

9.4.4 多个视图添加到单个文档 237

9.5 文档/视图与框架的交互 238

9.5.1 框架窗口的处理 239

9.5.2 框架命令的处理 239

9.5.3 框架与文档/视图的交互 240

9.6 打印的设置 241

9.6.1 文档与视结构中的打印流程 241

9.6.2 自定义打印功能的实现 243

9.6.3 打印预览 244

9.6.4 【实例】图像打印程序 245

9.7 【实例】多文档和多视图的编程 249

9.7.1 创建多文档与多视图 249

9.7.2 定义新视图类 250

9.7.3 修改子框架窗口CChildFrame 252

9.8 小结 253

第10章 程序调试与编程技巧 254

10.1 调试VisualC++程序 254

10.1.1 bugs程序 254

10.1.2 设置断点 255

10.1.3 单步执行 256

10.1.4 检查运行时程序的数据 257

10.1.5 编辑并继续 260

10.2 其他相关处理 260

10.2.1 异常处理 261

10.2.2 诊断调试 262

10.2.3 用VisualC做远程调试 264

10.2.4 使用调试功能检测内存泄漏 264

10.3 DEBUG版本与RELEASE版本 269

10.4 其他应用技巧 270

10.4.1 全面清除历史记录的实例 270

10.4.2 清理VisualC++工程 275

10.4.3 通过优化使代码效率更高 275

10.4.4 VisualC++编译时加快链接 276

10.4.5 代码维护技巧 277

10.5 小结 277

第4篇 Windows数据库、网络通信与ActiveX控件 280

第11章 数据库的程序设计 280

11.1 数据库概述 280

11.1.1 应用VisualC++开发数据库的特点 280

11.1.2 VisualC++开发数据库的技术 281

11.2 ODBC数据库管理 281

11.2.1 ODBC的体系结构 282

11.2.2 SQL操作 283

11.2.3 用MFCODBC访问数据库 285

11.3 DAO数据库访问对象 287

11.3.1 基于DAO的程序特色 287

11.3.2 用DAO开发数据库应用程序 288

11.4 【实例】ODBC技术开发数据库 290

11.4.1 创建数据源 290

11.4.2 创建ODBC应用程序 290

11.4.3 增加数据表记录 292

11.4.4 删除数据表记录 294

11.4.5 查找数据表记录 294

11.5 小结 295

第12章 网络通信程序设计 296

12.1 网络体系结构与协议 296

12.1.1 OSI参考模型 296

12.1.2 TCP/IP分层模型 298

12.1.3 IP地址 300

12.1.4 TCP/IP 302

12.1.5 UDP协议 302

12.1.6 客户端服务器模型 303

12.2 WindowsSockets编程 304

12.2.1 Socket(套接字)介绍 304

12.2.2 Socket程序设计 305

12.2.3 【实例】WinSock程序 308

12.3 MFC套接字编程 311

12.3.1 套接字类CAsyncSocket的介绍 312

12.3.2 套接字类CSocket的应用 313

12.3.3 CSocket类的应用特点 314

12.4 WinInet编程 316

12.4.1 MFC的类WinInet 316

12.4.2 WinInet编程方法介绍 317

12.5 FTP编程 318

12.5.1 FTP简介 319

12.5.2 FTP客户端编程 320

12.5.3 FTP的断点续传 326

12.6 【实例】创建Web浏览器 326

12.6.1 准备知识 326

12.6.2 建立Web浏览器框架 327

12.6.3 应用程序实现代码 328

12.7 小结 331

第13章 COM、OLE与ActiveX技术 332

13.1 组件对象模型COM 332

13.1.1 创建COM对象 333

13.1.2 对象的生存期 333

13.1.3 获取接口指针 334

13.1.4 创建COM服务器 334

13.1.5 定位透明度 336

13.2 OLE技术概述 337

13.2.1 结构化存储 337

13.2.2 Monikers介绍 338

13.2.3 统一数据传输 338

13.2.4 OLE文档 339

13.2.5 OLE自动化 339

13.3 ActiveX技术概述 340

13.3.1 ActiveX控件 341

13.3.2 ActiveX文档 342

13.3.3 ActiveX控件容器 343

13.3.4 创建Activex控件 344

13.3.5 注册ActiveX控件 347

13.3.6 插入Activex控件 348

13.4 【实例】ActiveX时钟控件 350

13.4.1 创建时钟控件的基本功能 350

13.4.2 控件属性 351

13.4.3 使用属性页 354

13.4.4 设置控件的事件 355

13.4.5 添加控件方法 356

13.5 小结 356

第5篇 Windows内部处理技术 358

第14章 多线程应用程序的设计 358

14.1 线程基本知识概述 358

14.1.1 线程的ID和句柄 358

14.1.2 设置线程的优先级 359

14.1.3 多任务与多线程 360

14.2 创建和使用线程 361

14.2.1 创建线程CreateThread00函数 361

14.2.2 线程的分类 363

14.2.3 启动及初始化线程 363

14.2.4 悬挂和恢复线程 366

14.2.5 线程的休眠 366

14.2.6 终止线程 366

14.2.7 【实例】创建工作者线程 367

14.3 实现多线程同步的相关知识 368

14.3.1 线程的同步机制 369

14.3.2 临界区对象 369

14.3.3 互斥内核对象 372

14.3.4 事件内核对象 374

14.3.5 信号量内核对象 378

14.3.6 线程局部存储 381

14.3.7 互锁函数 382

14.4 【实例】多线程的应用 382

14.4.1 添加线程对象和线程函数 382

14.4.2 添加鼠标左键触发函数 383

14.4.3 添加状态栏坐标提示 383

14.5 小结 384

第15章 Windows系统与内存的管理 385

15.1 驱动器和文件目录 385

15.1.1 驱动器卷标操作 385

15.1.2 逻辑驱动器的操作 386

15.1.3 格式化驱动器 387

15.1.4 文件目录操作 388

15.2 注册表的应用 389

15.2.1 注册表的结构 389

15.2.2 注册表的管理 390

15.2.3 【实例】用注册表键存储用户信息 393

15.3 任务栏状态区 395

15.3.1 任务栏状态区操作函数 395

15.3.2 任务栏状态区托盘程序的实现 396

15.4 控制面板 398

15.4.1 控制面板的工作原理 399

15.4.2 控制面板应用程序的实现 400

15.5 内存管理 402

15.5.1 Windows内存分布 402

15.5.2 内存属性与状态 403

15.5.3 全局内存与虚拟内存 405

15.5.4 虚拟内存管理 407

15.5.5 自由的、保留的和已提交的虚拟内存 407

15.5.6 释放虚拟内存 409

15.5.7 改变虚拟内存页的保护 409

15.5.8 锁定虚拟内存页 409

15.5.9 查询进程的虚拟内存 410

15.6 内存映射文件 410

15.6.1 内存映射文件的用途 410

15.6.2 内存映射文件的编程流程 412

15.6.3 内存映射文件的视图 412

15.7 【实例】用内存映射文件处理大文件 413

15.7.1 创建文件内核对象 414

15.7.2 创建文件映射内核对象 414

15.7.3 文件数据及视图的映射 416

15.7.4 关闭文件对象和文件映射对象 416

15.8 小结 417

第16章 动态链接库DLL和钩子 418

16.1 动态链接库DLL 418

16.1.1 动态链接的特点 418

16.1.2 VisualC15支持的动态链接库类型 419

16.1.3 DLL入口函数 420

16.1.4 DLL函数的导出 421

16.1.5 连接DLL的方式—显式和隐式 423

16.2 【实例】应用共享MFCDLL创建一个DLL 424

16.3 【实例】测试DLL文件 424

16.3.1 创建应用程序框架 424

16.3.2 编辑对话框并添加相应执行函数 424

16.3.3 连接待测试的DLL库文件 425

16.4 Windows钩子 426

16.4.1 钩子的定义及类型 426

16.4.2 钩子链表和钩子子程 429

16.4.3 钩子的安装与卸载 429

16.4.4 全局钩子与线程钩子 430

16.4.5 传递事件的函数 430

16.5 【实例】应用钩子机制截获鼠标点击次数 431

16.5.1 创建钓子DLL文件 431

16.5.2 创建调用钩子DLL文件的程序 432

16.5.3 运行并测试 433

16.6 Win32API的挂钩技术 433

16.6.1 网络监控技术 434

16.6.2 屏幕取词技术 434

16.6.3 防止进程结束技术 435

16.6.4 DLL注入机制 435

16.6.5 系统服务的挂钩 437

16.7 小结 438

第17章 Windows内核程序设计与防火墙开发 439

17.1 Windows操作系统和CPU的保护模式 439

17.1.1 Windows层次结构 439

17.1.2 CPU保护模式 440

17.1.3 内核模式和用户模式 440

17.2 Windows系统服务 441

17.2.1 常用API服务函数 441

17.2.2 设计服务程序 443

17.3 内核驱动程序设计 447

17.3.1 内核及内核对象 447

17.3.2 内核模式编程环境 447

17.3.3 内核钩子 449

17.3.4 【实例】最小化驱动程序 451

17.4 Windows防火墙 454

17.4.1 防火墙核心功能概述 454

17.4.2 代理防火墙与服务器 455

17.4.3 防火墙的工作流程 456

17.4.4 防火墙模块的划分 457

17.5 网络封包截获技术 457

17.5.1 过滤驱动程序的特性 457

17.5.2 传输层截获网络封包技术 457

17.5.3 网络驱动程序接口规范 457

17.5.4 中间驱动程序的特性 458

17.5.5 网络中间驱动程序截获网络封包技术 458

17.6 【实例】Windows个人防火墙系统的实现 459

17.6.1 Filter-Hook驱动 459

17.6.2 创建内核模式驱动 459

17.6.3 过滤函数 462

17.6.4 设置过滤函数 465

17.6.5 防火墙应用户操作界面的实现 466

17.6.6 防火墙应用程序的实现 467

17.7 小结 470