第1章 MFC概述及其常用组件 1
1.1 Microsoft基本类库引论 1
1.2 MFC组件元素一览 2
1.2.1 菜单条 2
1.2.2 对话框 2
1.2.3 各种常用的控件 2
第2章 消息处理机制 5
2.1 事件驱动程序设计 5
2.2 了解消息 5
2.2.1 消息结构 5
2.2.2 消息种类 6
2.2.3 创建消息环 7
2.2.4 投递和发送消息 9
2.3 各种消息分类 11
2.3.1 鼠标消息 11
2.3.2 键盘消息 13
2.3.3 窗口消息 14
2.3.4 其他窗口消息 17
2.3.5 自定义消息 18
第3章 设备描述表和CDC类 21
3.1 关于设备描述表 21
3.1.1 图形对象 21
3.1.2 图形方式 22
3.1.3 设备描述表的类型 22
3.1.4 设备描述表操作 24
3.2.1 基类CDC 25
3.2 MFC设备描述表类 25
3.2.2 其他的DC类(从CDC中派生出来的) 29
第4章 矢量图形与正文 33
4.1 GDI(图形设备接口)坐标系统 33
4.1.1 逻辑映像方式 34
4.1.2 绘图方式 35
4.1.3 绘制点 36
4.2.2 字体系列 37
4.2.1 字体 37
4.2 使用字体 37
4.2.3 改变视图中的字体 38
4.2.4 CFont类介绍 44
4.3 位图和光栅操作 46
4.3.1 位图 46
4.3.2 位图类型 47
4.3.3 显示位图 50
4.3.4 光栅和调色板 56
第5章 图形对象 61
5.1 画笔 61
5.1.1 画笔分类 61
5.1.2 类CPen 63
5.2 区域 65
5.2.1 区域的选择和建立 65
5.2.2 区域的操作 66
5.3 画刷 68
5.2.3 类CRgn 68
5.3.1 逻辑画刷类型 69
5.3.2 类CBrush 69
第6章 按钮和列表框 76
6.1 按钮 76
6.1.1 按键按钮 76
6.1.2 单选按钮 91
6.2 列表框 96
6.1.3 按钮风格 96
6.2.1 类CListBox 98
第7章 编辑框、组合框、滚动控件 105
7.1 编辑框 105
7.1.1 编辑控制框样式 105
7.1.2 类CEdit 107
7.2 组合框 112
7.2.1 组合框的类型和样式 112
7.2.2 类CComboBox 113
7.2.3 组合框使用 116
7.3.1 微调控件 125
7.3 滚动控件 125
7.3.2 滚动条 127
第8章 列表视图、树视图、进度条 130
8.1 列表视图 130
8.1.1 列表视图控件分类 130
8.1.2 CLlstCtrl 130
8.2 树视图控件 137
8.2.1 树视图控件样式 137
8.2.2 树视图通知消息 138
8.2.3 CTreeCtrl类方法 139
8.3 进度条 154
8.3.1 进度条样式 154
8.3.2 类CProgressCtrl 155
第9章 状态栏和工具栏 169
9.1 控件栏 169
9.2 工具栏 170
9.2.1 类CToolBar 173
9.2.2 类CToolBarCtrl 175
9.3 字符串资源和状态栏 185
9.3.1 字符串资源 185
9.3.2 状态栏 187
第10章 MFC通用类 194
10.1 数组类 194
10.1.1 类CPtrArray 195
10.1.2 类CWordArray 196
10.1.3 类CUIntArray 197
10.2 列表类 198
10.2.1 类CPtrList 199
10.2.2 类CStringList 200
10.3 字体串类 202
10.4 日期和时间类 206
10.4.1 类CTime 206
10.4.2 类CTimeSpan 210
10.5 文件类 212
10.5.1 类CFile 212
10.5.2 类CStdioFile 215
11.1 对话框概述 218
第11章 对话框程序设计 218
11.1.1 模式对话框 220
11.1.2 无模式对话框 221
11.1.3 控制框 223
11.2 MFC对话框编辑器 223
11.2.1 对话脚本 223
11.2.2 对话编辑器 224
11.3 MFC对话框基类CDialog 226
11.3.1 对话框默认消息处理 227
11.3.2 对话框的键盘接口 229
11.3.3 类CDialog成员函数 229
11.4 对话框编程举例 230
11.4.1 实例一 230
11.4.2 实例二 238
12.1 公用对话框概述 247
12.1.1 公用对话框的错误检测 247
第12章 公用对话框的应用 247
12.1.2 类CCommonDialog 248
12.2 颜色对话框 248
12.2.1 类CColorDialog 248
12.2.2 应用举例 251
12.3 文件对话框 255
12.3.1 类CFileDialog 255
12.3.2 CFileDialog成员函数 257
12.4 字体对话框 261
13.1 文档/视结构概述 264
第13章 文档/视结构 264
13.2 使用AppWizard创建框架应用程序 266
13.3 生成文档 269
13.3.1 概述 269
13.3.2 把文档数据保存到成员变量中 270
13.3.3 串行化数据 273
13.3.4 串行化对象 277
13.4 视类 278
13.5 同一文档多个视 280
13.6 添加对多文档类型的支持 283
13.7 复杂实例 284
第14章 内存管理 290
14.1 32位操作系统的内存管理 290
14.2 堆内存管理 293
14.2.1 堆的创建 293
14.2.2 获取进程堆 293
14.2.3 从堆中分配内存 293
14.2.4 取内存块的大小 294
14.2.5 重新申请内存 294
14.2.6 释放分配的内存 295
14.2.7 堆的销毁 295
14.3 虚拟内存管理 296
14.3.1 保留和提交虚拟内存 296
14.3.2 释放地址空间 297
14.3.3 修改页面属性 298
14.3.4 确定空间状态 298
14.3.6 查看系统内存信息 299
14.3.5 锁定内存 299
14.4 内存分配 300
第15章 进程与线程 301
15.1 进程的创建 301
15.1.1 参数lpApplicationName 302
15.1.2 参数lpCommandLine 303
15.1.3 参数lpProcessAttributes和参数lpThreadAttributes 303
15.1.4 参数bInheritHandles 303
15.1.5 参数dwCreationFlags 303
15.1.8 参数lpStartupInfo 304
15.1.6 参数lpEnvironment 304
15.1.7 参数lpCurrentDirectory 304
15.1.9 参数lpProcessInformation 306
15.2 进程的管理和终止 307
15.2.1 取得进程的句柄和ID 307
15.2.2 取得和设置进程的优先级 307
15.2.3 取得一个真正的句柄 308
15.2.4 进程的终止 309
15.3 线程的创建和终止 310
15.2.5 判断一个进程是否终止 310
15.3.1 线程的创建 311
15.3.2 线程的终止 312
15.4 线程的优先级及其管理 313
15.4.1 线程优先级的设定和获得 314
15.4.2 线程的挂起和恢复 314
15.4.3 线程的调度 315
15.5 实例 316
第16章 线程的同步与互斥 328
16.1 遇到的问题 328
16.2 临界区 330
16.2.1 临界区的初始化 330
16.2.2 进入和离开临界区 330
16.2.3 利用临界区的例子 331
16.3 互斥量 334
16.3.1 创建和打开互斥量 335
16.3.3 释放互斥量 336
16.3.2 获得互斥量 336
16.4 信号量 337
16.4.1 创建和打开信号量对象 337
16.4.2 获得和释放信号量 338
16.5 事件 338
16.5.1 创建和打开事件对象 339
16.5.2 设置和重置事件对象 339
16.5.3 另一个进入同步对象的函数 340
16.6 多线程同步举例 341
第17章 动态链接库 359
17.1 动态链接库的分类及其工作原理 360
17.1.1 动态链接库的分类 360
17.1.2 动态链接库的工作原理 360
17.2 使用动态链接库 361
17.2.1 装入动态链接库 361
17.2.2 取得函数地址 362
17.3 动态链接库的编写 363
18.1.1 网络连接的拓扑结构 373
18.1 网络的结构 373
第18章 网络编程 373
18.1.2 总线仲裁 374
18.1.3 计算机网络的连接 374
18.2 网络的分层结构 375
18.2.1 ISO/OSI网络模型的分层 375
18.2.2 TCP/IP网络分层 376
18.3 TCP/IP协议组 377
18.3.1 理解IP地址 377
18.3.3 IP协议 378
18.3.2 ARP和RARP 378
18.3.4 ICMP协议 379
18.3.5 TCP协议 380
18.3.6 UDP协议 381
18.4 Socket编程 381
18.4.1 函数WSAStartup 381
18.4.2 函数WSACleanup 382
18.4.3 创建SOCKET 383
18.4.4 connect()和bind() 384
18.4.5 通过Socket传输数据 385
18.4.6 通过Socket接收数据 386
18.4.7 函数listen()和accept() 387
18.4.8 数据库函数 388
18.5 设计网络应用程序 389
18.5.1 获取主机的IP 389
18.5.2 Ping 390
19.1.1 注册表的结构 410
19.1 注册表的结构和作用 410
第19章 注册表 410
19.1.2 注册表的作用 411
19.2 注册表函数 412
19.2.1 打开注册表 412
19.2.2 关闭注册表 413
19.2.3 从注册表中取得数据 413
19.2.4 设置注册表中的键值 414
19.2.5 建立并打开指定的关键字 415
19.2.6 枚举每一个子关键字 416
19.3 注册表操作实例 417
第20章 文件管理 437
20.1 逻辑磁盘和目录操作 437
20.1.1 取得有关驱动器的信息 437
20.1.2 目录操作 439
20.2 文件操作 442
20.2.1 文件的拷贝 442
20.2.3 文件移动或者改名 443
20.2.2 文件的删除 443
20.2.4 文件的查找 444
20.2.5 遍历所有的文件 445
20.2.6 文件查找 449
20.3 文件的打开和读写 450
20.3.1 打开和关闭文件 450
20.3.2 文件的读写 452
20.3.3 设置文件指针位置和文件尾 453
20.3.4 文件的存盘和锁定 454
20.4 文件的异步读写 456
20.3.5 取得文件大小 456
20.5 内存映射文件 458
20.5.1 创建和关闭文件映射对象 458
20.5.2 打开文件映射对象 459
20.5.3 建立和解除映射视图 460
第21章 使用ActiveX控件 463
21.1 ActiveX控件概述 463
21.2 背景知识简介 464
21.3 控件包容器 465
21.3.1 控件包容器概述 465
21.3.2 向Web页添加ActiveX控件 467
21.3.3 Test Container实用程序 468
21.3.4 向对话框添加ActiveX控件 471
21.3.5 事件 473
21.3.6 方法 475
21.3.7 属性 475
21.4 使用MFC编写ActiveX控件 481