第一章 动手写第一个Windows程序 1
1.1 用AppWizard生成程序框架 1
1.1.1 启动Visual C++6.0 1
1.1.2 启动AppWizard建新项目 2
1.1.1 了解应用程序的内容 6
1.2 显示 世界 你好! 6
1.3 小结 7
第二章 熟悉Visual C++6.0集成环境 8
2.1 开发平台 8
2.3 菜单 9
2.2 几个开发概念 9
2.3.1 文件菜单(File菜单) 10
2.3.2 编辑菜单(Edit菜单) 11
2.3.3 查看菜单(View菜单) 13
2.3.4 插入菜单(Insert菜单) 14
2.3.5 项目管理菜单(Project菜单) 14
2.3.6 编译执行菜单(Build菜单) 15
2.3.7 调试菜单(Debug菜单) 16
2.3.8 对话框布局菜单(Layout菜单) 17
2.3.9 工具菜单(Tool菜单) 19
2.3.10 窗口菜单(Window菜单) 19
2.5 新建对话框 20
2.3.11 帮助菜单(Help菜单) 20
2.4 工具栏 20
2.6 应用程序向导(AppWizard) 21
2.6.1MFC Executable AppWizard 21
2.6.2 Win32 Application 26
2.7类向导(Class Wizard) 26
2.7.1 消息映射 27
2.7.2 成员变量 27
2.7.3 增加新类 29
2.7.4 删除类 29
2.8 组件廊 30
2.9 项目设置对话框 31
2.9.1 General 页 31
2.9.2 Debug 页和 C/C++ 页 32
2.9.3 Link 页和 Resource 页 33
2.10 工作区窗口 34
2.10.1 ClassView窗口 34
2.10.2 ResourceView窗口 34
2.10.3 FileView窗口 35
2.11 资源编辑 35
2.11.1 快捷键表编辑 35
2.11.2 对话框编辑 36
2.11.3 菜单编辑 38
2.11.4 图标编辑 39
2.11.5 字符串表编辑 39
2.11.6 HTML资源编辑 40
2.11.7 版本资源编辑 40
2.11.8 资源ID管理 41
2.12 程序编辑功能介绍 41
2.13 调试器(Debugger) 42
2.14 输出窗口(Output) 43
2.15 定制对话框(Customize) 44
2.16 选项对话框(Option) 45
2.17 宏 47
2.18 帮助系统 48
2.19 小结 49
第三章 MFC概述 50
3.1 MFC类的基本概念 50
3.1.1 理解C++类 50
3.1.2 类的派生 52
3.1.3 MFC类的体系结构 55
3.2 MFC程序框架 57
3.2.1 CAboutDlg类 59
3.2.2 CHelloApp类 60
3.2.3 CMainFrame类 61
3.2.4 CChildFrame类 62
3.2.5 CHelloView类 63
3.2.6 CHelloDoc类 63
3.3 MFC程序执行流程 64
3.3.1 MFC的WinMain函数 64
3.3.2 InitInstance函数的功能 66
3.3.3 CMainFrame类的OnCreate()函数 67
3.3.4 创建空文档 68
3.3.5 消息循环 68
3.4 小结 70
第四章 MFC的窗口消息 71
4.1 消息 71
4.1.1 消息操作的基本API 72
4.1.2 窗口消息的分类 73
4.1.3 窗口函数 74
4.2 MFC的消息传递机制 76
4.2.1 PreTranslateMessage函数 76
4.2.2 MFC的窗口函数 77
4.3 MFC的消息映射 78
4.3.1 窗口消息映射的生成 78
4.3.2 窗口消息映射的形式 80
4.4 手工处理消息映射 84
4.5 常用的窗口消息 85
4.5.1 窗口的创建和销毁 85
4.5.2 窗口大小发生变化 85
4.5.3 窗口客户区内鼠标移动 85
4.5.4 菜单和工具栏命令 86
4.5.5 OLE控件的事件 87
4.6 小结 87
第五章 文档、视和框架 88
5.1 Doc/View体系结构 88
5.1.1 单文档/多文档程序 89
5.1.3 文档类 90
5.1.2 主框架类和子框架类 90
5.1.4 模板类 91
5.1.5 视类 92
5.2 Doc/View体系在程序中的应用 92
5.2.1 创建文档类 92
5.2.2 文档中的数据 93
5.2.3 Serialize() 94
5.2.4 Onl??ewDocument() 95
5.2.5 OnOpenDocument() 96
5.2.6 Dirty 标志 96
5.3.1 CEditView类 97
5.3 视类 97
5.2.8 访问文档 97
5.2.7 OnSaveDocument() 97
5.3.2 CRichEditView类 98
5.3.3 CScrollView类 98
5.3.4 控件视 99
5.4 文档模板 100
5.5 应用框架 102
5.5.1 状态栏 102
5.5.2 工具条 106
5.5.3 菜单 110
5.6.2 删除与新建文档有关的代码 113
5.6.1 创建项目 113
5.6 一个例子BmpViewer 113
5.6.3 支持同时打开多个文件 115
5.6.4 编写文档类和视类 117
5.6.5 增加分裂式窗口支持 123
5.6.6 增加状态栏上的提示信息 124
5.6.7 改善工具栏和 窗口 菜单 126
5.6.8 增加 全部关闭 功能 126
5.6.9 增加 显示比例 支持 127
5.6.10 添加 上下文菜单 支持 135
5.7.1 自绘制菜单 136
5.6.11 BmpViewer总结 136
5.7 用户界面的一些高级技术 136
5.7.2 复杂的分隔窗口和一档多视 145
5.7.3 框架窗口内多个视的切换显示 158
5.8 小结 161
第六章 对话框和控件 162
6.1 对话框 162
6.1.1 创建对话框资源 163
6.1.2 定义对话框和控件的ID 163
6.1.3 为对话框添加处理代码 165
6.1.4 模式对话框 170
6.1.5 深入了解模式对话框程序 171
6.1.6 无模式对话框 172
6.2 Windows通用对话框 173
6.2.1 CFileDialog 173
6.2.2 CPrintDialog 174
6.2.3 CColorDialog 174
6.2.4 CFindAndReplace 174
6.3各种控件 176
6.3.1 按钮控件 177
6.3.2 组框 180
6.3.3 单选按钮 180
6.3.4 复选框 184
6.3.5 列表框控件 188
6.3.6 组合框 194
6.3.7 滚动条控件 195
6.3.8 进度条控件 199
6.3.9 滑块控件 202
6.3.10 上下控件 204
6.4 创建自己的控件——巧用控件的例子 205
6.4.1 程序具体构思 205
6.4.2 实现步骤 205
6.5 小结 212
7.1 MFC的绘图机制 213
第七章 用MFC进行绘图和打印 213
7.1.1几种数据类型 214
7.1.2 使用GDI对象 215
7.1.3 映射方式 224
7.2 利用CDC绘图 226
7.2.1 创建DrawIt应用程序 226
7.2.2 菜单的可视化设计 227
7.2.3 查看OnDraw()函数的作用 227
7.2.4 给菜单项填加代码 228
7.2.5 在OnDraw()中进行绘图 230
7.3 打印技术 235
7.2.6 其他话题 235
7.3.1 单页文档的打印和打印预览 236
7.3.2 缩放原理 236
7.3.3 多页文档的打印 237
7.3.4 MFC和打印 241
7.4 小结 243
第八章 窗口的子类化和超类化 244
8.1 子类化和超类化 244
8.1.1 窗口类的基本概念 244
8.1.2 窗口的子类化 248
8.1.3 窗口类的超类化 250
8.1.4 MFC编程中的子类化 251
8.2 文本编辑框子类化举例 251
8.3 工具提示子类化举例 256
8.4 MDI客户窗口超类化举例 262
8.5 小结 268
第九章 用MFC建立多线程应用程序 269
9.1 进程(Process)的概念 269
9.1.1进程的产生与结束 269
9.1.2 产生子进程 270
9.1.4 终止进程 272
9.1.3 子进程的继承 272
9.2 一个进程的小例子 273
9.3 线程(Thread)的概念 276
9.3.1 一个线程的产生 276
9.3.2 线程和MFC对象 277
9.4 使用工作线程(Worker Thread) 278
9.4.1 创建工作线程 278
9.4.2 终止工作线程 279
9.5 使用用户界面线程(User-interface Thread) 280
9.5.1 创建用户界面线程 280
9.5.2 在用户界面线程中处理消息 281
9.5.3 终止用户界面线程 282
9.6 线程的优先权 283
9.7 线程的同步 284
9.7.1 使用临界区 285
9.7.2 使用互斥量 287
9.7.3 使用信号量 289
9.8 线程通信 290
9.8.1 利用全局变量通信 291
9.8.2 利用用户定义的消息通信 291
9.8.3 利用事件对象通信 292
9.9 一个多线程应用——线程拔河 294
9.9.1 创建新项目MTTest 294
9.9.2 添加成员变量和函数声明 296
9.9.3 编写MTTest对话框的代码 298
9.9.4 编写子线程代码 303
9.9.5 观察执行现象 304
9.10 小结 305
第十章 动态链接库 306
10.1 为什么使用动态链接库 306
10.2 在程序中使用动态链接库 308
10.2.1 调用约定 309
10.2.2 调用过程 310
10.3.1 DLL的结构和导出方式 312
10.3 使用动态链接库 312
10.3.2 在应用程序中链接DLL 315
10.4 使用动态链接库扩展MFC 318
10.5 小结 323
第十一章 通用类 324
11.1 CString类 324
11.1.1 构造CString类实例 324
11.1.2 使用Cstring进行字符串处理 326
11.1.3 使用Format函数 328
11.1.4 直接缓冲区访问 330
11.2 链表类 331
11.2.1 CList模板 332
11.2.2 MFC预定义的链表类 334
11.2.3 定义自己的链表类 335
11.3 数组类 335
11.3.1 CArray模板 335
11.3.2 MFC定义的数组类 338
11.3.3 定义自己的数组类 338
11.4 映射类 339
11.4.1 CMap模板 339
11.4.2 MFC定义的映射类 342
11.4.3 定义自己的映射类 342
11.5.1 CTime类 343
11.5 CTime类及COleDateTime类 343
11.5.2 COleDateTime类 345
11.6 CArchive类 347
11.7 CFile及其派生类 348
11.7.1 CFile类 349
11.7.2 CStdioFile类 351
11.7.3 CfileException类 351
11.8 标准模板库 352
11.9 小结 354
第十二章 多媒体编程 355
12.1 Windows多媒体编程的层次 355
12.1.1 MCI多媒体编程 356
12.1.2 ActiveMovie编程 357
12.1.3 VFW多媒体编程 357
12.1.4 DirectX和OpenGL 358
12.2 MCI编程 359
12.2.1 MCI编程的基本方法 359
12.2.2 MCI命令解析 359
12.2.3 使用MCI播放CD 366
12.2.4 使用MCI录音 369
12.3 VFW多媒体编程 371
12.3.1 Video For Windows API简介 372
12.3.2 生成视频文件 379
12.3.3 反转视频文件 385
12.3.4 使用低级音频函数 395
12.4 Active Movie编程 398
12.4.1 使用Media Player控件 398
12.5 DirectX编程 400
12.5.1 二维图形程序 400
12.5.2 三维图形程序 422
12.5.3 创建优质音效 424
12.5.4 控制硬件输入 424
12.6 小结 425
12.5.5 实现网络连接 425
第十三章 网络编程 426
13.1 有关网络的基本概念 426
13.1.1 计算机网络的定义 426
13.1.2 理解网络结构 427
13.1.3 理解网络体系结构 427
13.1.4 网络体系结构中的层次概念 427
13.1.5 网络体系结构中的协议概念 428
13.1.6 服务和协议 429
13.1.8 TCP/IP协议组 430
13.1.7 理解服务模式 430
13.2 Windows套接字编程 432
13.2.1 理解服务器/客户机模型 432
13.2.2 什么是套接字 432
13.2.3 数据报套接字 433
13.2.4 流式套接字 438
13.3 异步Socket编程 441
13.4 MFC Socket编程 443
13.4.1 MFC中的套接字类 443
13.4.2 CAsyncSocket类 443
13.4.3 CSocket类 449
13.4.4 在MFC程序中使用MFC套接字类 451
13.5.1 邮件槽的一般概念 457
13.5 邮件槽编程 457
13.5.2 创建邮件槽 458
13.5.3 邮件槽的写入操作 459
13.5.4 邮件槽的读出操作 461
13.5.5 邮件槽小结 463
13.6 WNet API和NT API编程 463
13.6.1 网络资源的描述 464
13.6.2 枚举网络资源 465
13.6.3 增加网络连接 468
13.6.6 增加共享资源 469
13.6.5 查询连接名字 469
13.6.4 取消网络连接 469
13.6.7 删除共享资源 472
13.6.8 检查共享资源 472
13.6.9 查询或改变共享资源的详细信息 472
13.7 管道编程 473
13.7.1 匿名管道 473
13.7.2 命名管道 474
13.7.3 例子:单线程多连接命名管道服务器 477
13.8 Wininet编程 482
13.8.1 HINTERNET和CInternetSession类 483
13.8.2 FTP API和CFtpConnection类 486
13.8.3 HTTP API和CHttpConnection类 491
13.9 小结 496
第十四章 用InstallShield制作安装程序 497
14.1 什么是安装程序 497
14.2 用Project Wizard建立新项目 498
14.2.1 安装程序项目的组成 499
14.2.2 第一步:填写软件基本信息 501
14.2.3 第二步:选择安装需要 502
14.2.4 第三步:选择安装平台 503
14.2.5 第四步:选择软件支持的语言 504
14.2.6 第五步:选择安装类型 504
14.2.7 第六步:选择安装组件 505
14.2.9 完成并查看新项目 506
14.2.8 第七步:选择文件分组 506
14.3 详细定制项目 507
14.3.1 Scripts 507
14.3.2 Components 507
14.3.3 Setup Types 511
14.3.4 Media 512
14.3.5 Setup Files 513
14.3.6 File Groups 514
14.3.7 Resource 516
14.4 编译执行 516
14.5 小结 517