1.1 强制类型转换 1
1.1.1 关键字static-cast 1
第1章 强制类型转换与模板 1
1.1.2 关键字reinterpret-cast 2
1.1.3 关键字const-cast 2
1.1.4 关键字mutable 3
1.2 创建堆对象 3
1.3 函数模板 4
1.3.1 函数重载 4
1.3.2 函数模板 6
1.4 小结 11
2.1.1 类的构造 13
第2章 再谈面向对象程序设计 13
2.1 类与对象 13
2.1.2 对象 15
2.1.3 对象标识 16
2.1.4 对象交互机制 19
2.2 类的成员 21
2.2.1 静态成员 21
2.2.2 内联成员函数 23
2.2.3 带缺省参数值的成员函数 26
2.2.4 类的友元 27
2.2.5 类作用域与名字空间 30
2.2.6 局部类与嵌套类 38
2.2.7 指向类成员的指针 40
2.3 构造函数和析构函数 41
2.3.1 构造函数与析构函数 41
2.3.2 数据成员的初始化 46
2.3.3 赋值 49
2.3.4 浅复制与深复制 51
2.3.5 const修饰的成员函数 53
2.3.6 对象数组 55
2.3.7 类型转换 57
2.4 存储管理 59
2.5 类型模板 61
2.6 小结 67
第3章 继承与重载 68
3.1 继承的基本概念 68
3.2 访问控制与支配规则 70
3.2.1 访问控制 70
3.2.2 支配规则 76
3.3 构造函数与析构函数 78
3.3.1 构造函数与析构函数 78
3.3.2 隐含的复制初始化和赋值 80
3.4 类型适应与多态性 82
3.5 多重继承 85
3.6.1 重载的基本类型 90
3.6.2 类中成员函数的重载 90
3.6 函数与操作符的重载 90
3.6.3 操作符重载 92
3.7 操作符重载与类型转换 100
3.8 小结 103
第4章 多态性与动态联编 104
4.1 动态联编的实现机制 104
4.1.1 联编与动态联编 104
4.1.2 虚函数 105
4.1.3 动态联编的实现机制 107
4.2 动态类型 111
4.2.1 运行时的类型识别 111
4.2.2 动态类型强制转换 114
4.3.1 虚析构函数 118
4.3 特殊虚函数 118
4.3.2 纯虚函数 119
4.3.3 操作符虚函数 120
4.4 小结 120
第5章 处理列表视图 121
5.1 在标题行中显示图象 122
5.2 确定标题项的鼠标右击活动 127
5.3 设置与禁止改变列宽 128
5.4 列表项的选择 129
5.5 列表项的编辑 138
5.6 小结 147
6.1 使用图象 148
第6章 处理树形视图 148
6.2 分支的展开与折叠 150
6.3 树的遍历 152
6.4 列表项的复制与拖放操作 157
6.5 允许多重选择 169
6.6 在分支上添加复选框 175
6.7 设置列表项的字体和颜色属性 183
6.8 添加背景色和背景图案 187
6.9 串行化 197
6.10 小结 199
第7章 格式化文本编辑 200
7.1 将选中文本设为只读 200
7.2 改变文字换行模式 202
7.3 更改制表符的设定 203
7.4 提供格式工具栏 205
7.5 彩色语法编辑器 218
9.4.5 打印时分页 229
7.6 小结 235
第8章 处理属性页 236
8.1 MFC对属性框的支持 237
8.2 调整属性框的按钮 238
8.2.1 隐藏属性框中的“App1y”按钮 238
8.2.2 隐藏其它标准按钮 238
8.2.3 改变按钮的位置 238
8.2.4 改变子窗口的位置 239
8.3 向属性框中加入控件 239
8.4 调整tab选项卡 240
8.4.1 改变tab选项卡的标签 240
8.4.2 更改标签字体 241
8.4.3 给选项卡添加图标 241
8.5 创建属性框 242
8.5.1 在CFormView中创建属性框 242
8.5.2 在对话框内生成属性框 243
8.5.3 加入〈tab〉键 245
8.6 Wizard属性框和属性页 246
8.7 用CPropertySheet构造整个应用程序 254
8.8 在属性框的按钮区加入位图 258
8.9 用无模式属性框做框架的视图 259
8.10 自动重排tab选项卡下的可见控件 260
8.11 视图中可变大小的属性框 261
8.12 可移动可变大小的属性页 265
8.13 小结 268
第9章 打印与打印预览功能 269
9.1 由AppWizard开始 269
9.2 MFC的打印与打印预览成员函数 293
9.3 CPrintInfo类 294
9.4 多页打印 295
9.4.3 重载视图类成员函数 296
9.4.1 缺省打印操作的工作原理 296
9.4.2 多页打印协议 296
9.4.4 分页 297
9.4.6 打印页眉页脚 301
9.5 小结 302
第10章 ActiveX控件编程 303
10.1 ActiveX概要 303
10.1.1 文档中心化 303
10.1.2 对象链接与嵌入 304
10.1.3 组件对象模型 307
10.14 ActiveX自动化 308
10.2.1 创建控件的基本框架 310
10.1.5 ActiveX控件 310
10.2 由AppWizard开始 310
10.2.2 AppWizard源代码 312
10.2.3 更改ActiveX控件的位图和图标 327
10.2.4 创建和测试ActiveX控件 327
10.3 绘制ActiveX控件JuneDrawing 329
10.3.1 使用背景色库存属性BackColor 329
10.3.2 设置缺省的背景色 332
10.3.3 更改成员函数OnDraw 332
10.4 添加自定义通知属性 333
10.4.1 添加DrawingShape属性 333
10.4.2 设置DrawingShape的缺省值 335
10.4.3 添加成员函数GetDrawRect 336
10.4.4 修改成员函数OnDraw 337
10.4.5 修改成员函数OnDrawingShapeChanged 338
10.5 响应鼠标事件 339
10.5.1 添加属性信息 339
10.5.2 添加成员函数IsInDrawingRegion 342
10.5.3 添加成员函数FlashColor 343
10.5.4 处理用户自定义事件 344
10.6 处理文本和字体 347
10.6.1 添加库存属性 347
10.6.2 绘制标题 348
10.7.1 添加Font与Color属性页 349
10.7 属性页 349
10.7.2 在缺省属性页上添加控件 350
10.7.3 链接控件与属性 351
10.8 属性更新 353
10.8.1 处理DrawingOffset属性 353
10.8.2 添加WM_SIZE消息响应 358
10.9 小结 359
第11章 Internet编程 360
11.1 MApI编程 360
11.2 VisualC++6.0的Internet类 368
11.3 查看FTP站点的文件目录 379
11.4 使用ActiveX控件WebBrowser 400
11.5 小结 409
12.1 线程的基本概念 410
12.1.1 使用线程的场合 410
12.1.2 编程的基本概念 410
第12章 多任务与多线程编程 410
12.1.3 使用C和Win32编写多线程应用程序 411
12.2 使用C++和MFC编写多线程应用程序 417
12.2.1 创建用户界面线程 417
12.2.2 创建工作者线程 418
12.2.3 线程的终止 419
12.2.4 检索线程的退出码 420
12.2.5 应用程序实例 420
12.3.2 使用自定义消息 425
12.3 线程通信 425
12.3.1 使用全局变量 425
12.3.3 使用事件对象 428
12.4 线程同步 428
12.5 小结 447
第13章 WindowsNT服务编程 448
13.1 服务的基本概念 448
13.2 创建服务程序 449
13.3 服务的安装 457
13.4 服务的删除 459
13.5 小结 461