第1章 MFC应用程序概述 1
1.1 Windows应用程序概述 2
1.2 消息 2
1.2.1 消息结构 3
1.2.2 消息类型 3
1.2.3 消息队列 4
1.2.4 消息循环 6
1.3 程序的进入点——WinMain函数 6
1.4 窗口的诞生 7
1.4.1 窗口类 7
1.4.2 注册窗口类 9
1.4.3 创建窗口 9
1.4.4 显示窗口 10
1.4.5 开发原生Win32应用程序 10
1.5 MFC程序开发概述 15
1.5.1 MFC类库的产生与发展 15
1.5.2 MFC类库层次 15
1.5.3 MFC常用数据类型 15
1.5.4 MFC全局函数 15
1.5.5 开发基于MFC的应用程序 20
1.6 Visual C++ 6.0集成开发环境 24
1.6.1 开发环境 24
1.6.2 菜单介绍 32
1.6.3 定制自己的开发环境 36
第2章 C++面向对象程序开发 47
2.1 类和对象概述 48
2.2 类的定义 48
2.3 类成员的访问 48
2.4 构造函数和析构函数 49
2.4.1 构造函数 49
2.4.2 析构函数 52
2.5 方法重载和运算符重载 53
2.5.1 方法重载 53
2.5.2 运算符重载 54
2.6 虚函数 56
2.7 this指针 62
2.8 继承 64
2.8.1 单继承 64
2.8.2 多继承 65
2.8.3 虚继承 69
2.9 静态数据成员和静态方法 70
2.9.1 静态数据成员 70
2.9.2 静态方法 72
2.10 友元类和友元函数 73
2.10.1 友元类 73
2.10.2 友元函数 75
2.11 头文件的重复引用 76
第1章 MFC应用程序概述 1
1.1 Windows应用程序概述 2
1.2 消息 2
1.2.1 消息结构 3
1.2.2 消息类型 3
1.2.3 消息队列 4
1.2.4 消息循环 6
1.3 程序的进入点——WinMain函数 6
1.4 窗口的诞生 7
1.4.1 窗口类 7
1.4.2 注册窗口类 9
1.4.3 创建窗口 9
1.4.4 显示窗口 10
1.4.5 开发原生Win32应用程序 10
1.5 MFC程序开发概述 15
1.5.1 MFC类库的产生与发展 15
1.5.2 MFC类库层次 15
1.5.3 MFC常用数据类型 15
1.5.4 MFC全局函数 15
1.5.5 开发基于MFC的应用程序 20
1.6 Visual C++ 6.0集成开发环境 24
1.6.1 开发环境 24
1.6.2 菜单介绍 32
1.6.3 定制自己的开发环境 36
第2章 C++面向对象程序开发 47
2.1 类和对象概述 48
2.2 类的定义 48
2.3 类成员的访问 48
2.4 构造函数和析构函数 49
2.4.1 构造函数 49
2.4.2 析构函数 52
2.5 方法重载和运算符重载 53
2.5.1 方法重载 53
2.5.2 运算符重载 54
2.6 虚函数 56
2.7 this指针 62
2.8 继承 64
2.8.1 单继承 64
2.8.2 多继承 65
2.8.3 虚继承 69
2.9 静态数据成员和静态方法 70
2.9.1 静态数据成员 70
2.9.2 静态方法 72
2.10 友元类和友元函数 73
2.10.1 友元类 73
2.10.2 友元函数 75
2.11 头文件的重复引用 76
第3章 消息映射与命令处理 81
3.1 消息映射概述 82
3.1.1 窗口函数程序设计的缺点 82
3.1.2 消息映射的产生 83
3.2 消息映射表 83
3.2.1 消息映射表的数据结构 83
3.2.2 消息映射表的构成 85
3.3 消息映射宏 87
3.3.1 Windows消息映射宏 87
3.3.2 命令消息映射宏 91
3.3.3 控件通知消息映射宏 92
3.3.4 通知消息映射宏 94
3.3.5 反射消息映射宏 95
3.3.6 扩展消息映射宏 96
3.4 窗口消息处理 96
3.4.1 MFC中的窗口函数 96
3.4.2 普通窗口消息处理 101
3.4.3 命令消息处理 105
3.4.4 通知消息处理 109
3.4.5 反射消息处理 109
第4章 对话框程序设计 113
4.1 对话框设计 114
4.1.1 对话框资源设计 114
4.1.2 对话框属性窗口 115
4.2 对话框的创建与显示 117
4.2.1 对话框基类(Cdialog) 117
4.2.2 模态对话框 118
4.2.3 非模态对话框 119
4.3 对话框中子控件的访问 120
4.3.1 控件的访问 120
4.3.2 控件的命名 121
4.3.3 遍历对话框中的控件 123
4.4 对话框与子控件的消息处理 124
4.4.1 编写对话框消息处理函数 124
4.4.2 编写控件消息处理函数 125
4.4.3 消息处理函数的共享 126
4.5 对话框数据交换与验证 127
4.5.1 数据交换 127
4.5.2 数据验证 128
4.6 属性表单 130
4.6.1 属性表单概述 130
4.6.2 属性表单类 130
4.6.3 创建属性表单 133
4.7 对话栏 134
4.7.1 对话栏概述 134
4.7.2 对话栏主要方法 134
4.7.3 对话栏应用 134
4.8 通用对话框 136
4.8.1 文件对话框 136
4.8.2 查找\替换对话框 140
4.8.3 打印对话框 143
4.8.4 颜色对话框 145
4.8.5 字体对话框 147
4.8.6 定制通用对话框 150
第5章 MFC通用控件 153
5.1 静态文本控件(Static Text) 154
5.1.1 静态文本控件属性窗口 154
5.1.2 静态文本控件的主要方法、事件 155
5.1.3 静态文本控件应用 156
5.2 编辑框控件(Edit Box) 157
5.2.1 编辑框控件属性窗口 157
5.2.2 编辑框控件的主要方法、事件 158
5.2.3 编辑框控件应用 161
5.3 列表框控件(List Box) 161
5.3.1 列表框控件属性窗口 161
5.3.2 列表框控件的主要方法、事件 162
5.3.3 列表框控件应用 164
5.4 组合框控件(Combo Box) 165
5.4.1 组合框控件属性窗口 165
5.4.2 组合框控件的主要方法、事件 165
5.4.3 组合框控件应用 167
5.5 按钮控件(Button) 168
5.5.1 按钮控件属性窗口 168
5.5.2 按钮控件的主要方法、事件 168
5.5.3 按钮控件应用 170
5.6 滚动条控件(Scroll Bar) 171
5.6.1 滚动条控件属性窗口 172
5.6.2 滚动条控件的主要方法、事件 172
5.6.3 滚动条控件应用 173
5.7 进度条控件(Progress) 177
5.7.1 进度条控件属性窗口 177
5.7.2 进度条控件的主要方法、事件 177
5.7.3 进度条控件应用 178
5.8 多媒体控件(Animate) 179
5.8.1 多媒体控件属性窗口 179
5.8.2 多媒体控件的主要方法、事件 179
5.8.3 多媒体控件应用 180
5.9 列表视图(List Control) 180
5.9.1 列表视图控件属性窗口 181
5.9.2 列表视图控件的主要方法、事件 181
5.9.3 列表视图控件应用 186
5.10 树视图控件(Tree Control) 188
5.10.1 树视图控件属性窗口 188
5.10.2 树视图控件的主要方法、事件 189
5.10.3 树视图控件应用 193
5.11 时间控件(Date Time) 195
5.11.1 时间控件属性窗口 195
5.11.2 时间控件的主要方法、事件 195
5.11.3 时间控件应用 196
5.12 日历控件(Month) 197
5.12.1 日历控件属性窗口 197
5.12.2 日历控件的主要方法、事件 198
5.12.3 日历控件应用 199
5.13 标签控件(Tab Control) 200
5.13.1 标签控件属性窗口 200
5.13.2 标签控件的主要方法、事件 200
5.13.3 标签控件应用 202
5.14 图像列表控件(CimageList) 203
5.14.1 图像列表控件的主要方法 203
5.14.2 图像列表控件应用 205
第6章 菜单、工具栏与状态栏设计 207
6.1 菜单设计 208
6.1.1 菜单类CMenu 208
6.1.2 菜单资源设计 212
6.1.3 菜单的显示与命令处理 213
6.1.4 动态创建菜单 214
6.1.5 菜单项的更新机制 217
6.1.6 自绘弹出式菜单 218
6.2 工具栏设计 222
6.2.1 工具栏类CToolBar 222
6.2.2 工具栏资源设计 225
6.2.3 工具栏的命令处理 226
6.2.4 动态创建工具栏 227
6.2.5 工具栏按钮的热点效果 229
6.2.6 具有提示功能的工具栏 231
6.2.7 带下拉按钮的工具栏 233
6.2.8 工具栏控制类CToolBarCtrl 236
6.3 状态栏设计 240
6.3.1 状态栏类CStatusBar 240
6.3.2 状态栏的创建 242
6.3.3 在状态栏中显示滚动字幕 243
6.3.4 带进度条的状态栏 244
6.3.5 状态栏控制类CStatusBarCtrl 245
第7章 GDI绘图 247
7.1 设备上下文 248
7.1.1 CDC类 248
7.1.2 CClientDC类 266
7.1.3 CWindowDC类 267
7.1.4 CPaintDC类 268
7.2 GDI对象 269
7.2.1 CPen类 269
7.2.2 CBrush类 271
7.2.3 CFont类 274
7.2.4 CRgn类 277
7.2.5 CBitmap类 282
7.2.6 CPalette类 287
7.2.7 GDI对象的生存期 288
7.3 元文件 288
7.3.1 CMetaFileDC类 288
7.3.2 利用元文件保存、打开绘图操作 289
第8章 文档、视图结构程序设计 291
8.1 文档、视图结构概述 292
8.2 开发文档、视图应用程序 292
8.3 文档、视图结构的创建 294
8.3.1 文档模板的创建 294
8.3.2 文档的创建 296
8.3.3 框架与视图的创建 297
8.4 文档模板 298
8.4.1 文档管理器 298
8.4.2 文档模板 301
8.5 文档对象 302
8.5.1 文档对象的主要方法 302
8.5.2 文档对象的序列化 304
8.5.3 文档的初始化 305
8.5.4 文档的命令处理 306
8.5.5 文档的销毁 307
8.6 视图对象 310
8.6.1 视图对象主要方法 310
8.6.2 视图对象的初始化 312
8.6.3 视图的销毁 312
8.7 框架对象 315
8.7.1 框架对象的主要方法 315
8.7.2 框架的初始化 316
8.7.3 框架的命令消息处理 317
8.8 文档、视图结构应用 318
8.8.1 视图窗体分割类CSplitterWnd 318
8.8.2 窗体视图类CFormView 320
8.8.3 其他 322
第9章 MFC打印技术 331
9.1 打印基础知识 332
9.1.1 打印机介绍 332
9.1.2 分辨率 332
9.1.3 映射模式 333
9.2 基于文档、视图结构的打印 335
9.2.1 文档视图的打印流程 335
9.2.2 CPrintInfo结构 341
9.2.3 动态计算页码 342
9.2.4 开发文档、视图结构打印程序 345
9.3 基于对话框程序的打印 347
9.4 在基于对话框的程序中调用文档、视图结构打印 351
9.5 打印控制 355
9.5.1 控制打印方向 355
9.5.2 设置打印纸大小 357
9.5.3 设置打印份数 359
9.6 打印预览 360
9.6.1 在文档、视图结构中自定义打印预览工具栏 361
9.6.2 在对话框程序中实现具有滚动功能的预览窗口 363
第10章 文件与注册表操作 369
10.1 MFC相关文件类 370
10.1.1 CFile类 370
10.1.2 CFileFind类 379
10.1.3 CStdioFile类 381
10.1.4 CMemFile类 383
10.2 读写INI文件 385
10.2.1 INI文件相关函数介绍 385
10.2.2 INI文件应用 387
10.3 读写注册表 392
10.3.1 注册表概述 392
10.3.2 注册表操作函数与CRegKey类 393
10.3.3 注册表应用 402
第11章 数据库编程 413
11.1 ADO技术概述 414
11.2 ADO对象 414
11.2.1 ADO对象的导入 415
11.2.2 连接对象 416
11.2.3 记录集对象 417
11.2.4 命令对象 419
11.3 使用ADO对象开发数据库应用程序 420
11.3.1 ADO智能指针 421
11.3.2 初始化COM环境 421
11.3.3 连接数据库 421
11.3.4 操作数据表 425
11.3.5 使用Execute方法操作数据表 429
11.4 事务应用 432
11.4.1 事务概述 432
11.4.2 事务在应用程序中的应用 432
11.5 其他数据库的应用 433
11.5.1 获得Access数据库结构 433
11.5.2 在程序中执行SQL脚本 436
11.5.3 自动附加SQL Server数据库 439
11.5.4 调用具有输出参数的存储过程 441
11.5.5 备份和还原数据库 443
11.5.6 向数据库中存储图片 446
第12章 系统内核对象 451
12.1 内核对象概述 452
12.1.1 内核对象的定义 452
12.1.2 内核对象的属性 452
12.2 内核对象的创建与关闭 453
12.2.1 创建内核对象 453
12.2.2 关闭内核对象 453
12.3 进程间共享内核对象 453
12.3.1 内核对象句柄的继承 454
12.3.2 改变内核对象句柄的标志 458
12.3.3 复制内核对象句柄 460
12.4 进程 463
12.4.1 进程概述 463
12.4.2 进程的实例句柄 463
12.4.3 进程的环境变量 464
12.4.4 进程的创建 465
12.4.5 进程的运行与终止 467
12.4.6 进程间通信 468
12.5 线程 470
12.5.1 线程概述 470
12.5.2 线程的创建 470
12.5.3 线程的终止 474
12.5.4 MFC对线程的封装 474
12.5.5 线程同步 479
第13章 MFC链接库 491
13.1 链接库概述 492
13.1.1 链接库文件类型 492
13.1.2 静态链接库概述 492
13.1.3 动态链接库概述 492
13.2 静态链接库 492
13.2.1 创建静态链接库 492
13.2.2 访问静态链接库 494
13.2.3 静态链接库的导入 496
13.3 动态链接库 497
13.3.1 MFC动态链接库类型 497
13.3.2 动态链接库的构成 499
13.3.3 创建动态链接库 501
13.3.4 隐式链接加载动态链接库 502
13.3.5 动态加载动态链接库 502
13.3.6 动态链接库的命名改编 504
13.3.7 从动态链接库中导出类 505
13.3.8 从动态链接库中导出对话框窗体对象 509
第14章 串口程序开发 515
14.1 计算机串口通信概述 516
14.1.1 串口通信的特点 516
14.1.2 串口通信的传输方式 516
14.1.3 通信方式 516
14.2 Windows API串口编程 517
14.2.1 串口API介绍 517
14.2.2 串口文件传输 532
14.3 MSComm控件编程 538
14.3.1 MSComm控件介绍 538
14.3.2 串口聊天程序设计 543
第15章 网络程序开发 545
15.1 网络基础知识 546
15.1.1 计算机网络概述 546
15.1.2 计算机网络的定义、功能及分类 546
15.1.3 网络拓扑结构 546
15.1.4 以太网概述 547
15.1.5 OSI参考模型 547
15.1.6 网络协议 549
15.2 Windows套接字技术 550
15.2.1 套接字概述 550
15.2.2 套接字相关函数 551
15.2.3 MFC对套接字的封装 555
15.3 利用套接字函数开发聊天系统 559
15.3.1 客户端聊天系统程序设计 559
15.3.2 服务器端聊天系统程序设计 562
15.4 开发面向连接的文件传输程序 565
15.4.1 派生套接字 565
15.4.2 文件传输程序设计 567
第16章 Internet程序开发 575
16.1 利用MFC开发Internet程序概述 576
16.2 WinInet编程 576
16.2.1 WinInet API函数 576
16.2.2 MFC对WinInet的封装 584
16.3 IIS编程 604
16.3.1 IIS概述 604
16.3.2 ISAPI介绍 605
16.3.3 MFC对ISAPI的封装 605
16.3.4 开发ISAPI程序 617
16.4 MAPI编程 622
16.4.1 MAPI函数介绍 622
16.4.2 利用MAPI发送电子邮件 628
第17章 程序调试与异常处理 633
17.1 程序调试 634
17.1.1 断点的设置与取消 634
17.1.2 调试窗口 639
17.1.3 内存泄漏 646
17.2 异常处理 647
17.2.1 异常捕捉 647
17.2.2 查看异常信息 648
17.2.3 抛出异常 649
第18章 Visual C++ 2005介绍 651
18.1 Visual C++ 2005特点 652
18.1.1 托管代码和.NET框架 652
18.1.2 类库 652
18.1.3 新的集成开发环境 653
18.2 创建Visual C++ 2005应用程序 657
18.2.1 创建MFC应用程序 657
18.2.2 创建托管Windows窗体应用程序 661
18.2.3 创建ASP.NET Web服务 666
第19章 C++托管扩展编程 673
19.1 C++托管扩展概述 674
19.1.1 什么是C++托管扩展 674
19.1.2 为现有应用程序添加托管支持 674
19.1.3 .Net平台下的托管特性 675
19.2 托管类型 677
19.2.1 值类型和引用类型 677
19.2.2 C++.net基本数据类型 680
19.2.3 对象句柄 681
19.2.4 字符串 681
19.2.5 托管数组 681
19.2.6 托管枚举类型 682
19.2.7 委托 682
19.3 托管类 683
19.3.1 声明托管类 683
19.3.2 虚方法 684
19.3.3 密封方法 686
19.3.4 属性 687
19.3.5 接口 689
19.3.6 序列化 690
19.4 异常捕捉与处理 692
19.4.1 在托管扩展中捕捉异常 692
19.4.2 在托管扩展中引发异常 693
19.5 实例开发 693
19.5.1 项目的创建 693
19.5.2 主窗体设计 694
19.5.3 利用ADO.NET访问数据库 698
19.5.4 系统登录模块设计 701
19.5.5 图书入库管理模块设计 703
19.5.6 图书出库管理模块设计 707
19.5.7 图书入库查询模块设计 711