第1章 VC++.NET综述 1
1.1 .NET平台 2
1.2 IDE 5
1.2.1 组成 5
1.2.2 自定义IDE 11
1.3 VC++.NET的新增功能 12
1.3.1 建立项目 12
1.3.2 C++托管 13
1.3.3 属性化编程 16
1.3.4 库的变化 17
第2章 定制窗口 19
2.1 MFC窗口 20
2.1.1 创建窗口 21
2.1.2 注册窗口 21
2.1.3 关闭和销毁窗口 22
2.1.4 激活窗口 22
2.2 示例——设置窗口风格 22
2.2.1 界面设计 23
2.2.2 修改窗口默认风格 23
2.2.3 设置窗口背景 24
2.2.4 更改窗口标题 25
2.2.5 更改窗口图标 25
2.2.6 使用动画窗口 27
2.2.7 使用透明窗口 28
2.2.8 使窗口总在最前 29
2.3 创建非规则形状的窗口 31
2.3.1 示例——创建六边形窗口 32
2.3.2 示例——创建异形窗口 34
第3章 菜单和控制条高级编程 39
3.1 菜单 40
3.1.1 CMenu类 40
3.1.2 菜单编程要点 41
3.1.3 示例——菜单编程 45
3.2 工具栏 49
3.2.1 CToolBar类简介 49
3.2.2 工具栏编程要点 54
3.2.3 示例——工具栏编程 56
3.3 状态栏 62
3.3.1 CStatusBar类 62
3.3.2 使用状态栏要点 66
3.3.3 示例——状态栏编程 66
3.4 对话条 70
3.4.1 CDialogBar类 71
3.5 ReBar控件 72
3.5.1 CReBar类 72
3.5.2 示例——为工具栏添加皮肤 73
第4章 控件及其编程 77
4.1 控件概述 78
4.2 创建控件 79
4.2.1 列表控件 80
4.2.2 选项卡控件 87
4.3 从标准控件派生控件 90
4.4 接收来自公共控件的通知 91
4.5 常用控件 92
4.5.1 静态控件 92
4.5.2 编辑控件 93
4.5.3 按钮控件 96
4.5.4 组合框控件 101
4.5.5 列表框控件 104
4.5.6 滑块控件 107
4.5.7 进度控件 111
4.5.8 滚动条控件 113
4.5.9 数值调节钮控件 117
4.5.10 图像列表控件 119
4.5.11 树控件 123
第5章 系统编程 131
5.1 注册表编程 132
5.1.1 注册表 132
5.1.2 操作注册表的Win32 API函数 134
5.1.3 支持注册表操作的.NET Framework类 136
5.1.4 示例——操作注册表 137
5.2 系统托盘编程 142
5.2.1 概述 142
5.2.2 示例——系统托盘编程 144
5.3 Win32钩子技术 146
5.3.1 钩子类型 147
5.3.2 编写钩子程序 148
5.3.3 示例——鼠标钩子程序 149
5.4 文件处理 153
5.4.1 序列化 153
5.4.2 使用CFile类 159
5.4.3 示例——文件分割器 162
5.5 剪贴板编程 167
5.5.1 概述 167
5.5.2 选择剪贴板机制 167
5.5.3 使用Windows标准剪贴板 167
5.5.4 使用OLE剪贴板机制 169
第6章 多文档/多视图编程 173
6.1 文档/视图体系 174
6.1.1 文档/视图体系概述 174
6.1.2 文档模板和文档/视图的创建过程 176
6.2 创建单文档多视图程序 178
6.2.1 标准的单文档多视界面 179
6.2.2 滚动和缩放视图 179
6.2.3 拆分窗口 181
6.2.4 示例1——单文档多视 183
6.2.5 示例2——单文档多视 186
6.3 多文档应用程序 193
6.4 多顶级文档 193
第7章 对话框高级编程 195
7.1 实现对话框数据交换和验证 196
7.2 无模式对话框 197
7.2.1 编程要点 197
7.2.2 示例——实现无模式对话框 199
7.3 通用对话框类 203
7.3.1 CColorDialog类 203
7.3.2 CFileDialog类 204
7.3.3 CFindReplaceDialog类 205
7.3.4 CFontDialog类 206
7.3.5 CPrintDialog类 207
7.4 属性表与属性页 207
7.4.1 属性表及运行机制 207
7.4.2 CPropertySheet类 209
7.4.3 CPropertyPage类 211
7.4.4 创建属性表 212
7.4.5 示例——使用模式属性表及向导属性表 213
7.5 Web对话框 220
7.5.1 创建Web对话框的一般方法 221
7.5.2 使用“Web对话框”编辑器 223
7.5.3 Web对话框编程 230
7.5.4 示例——鼠标敏感文字 232
第8章 GDI+图形编程 235
8.1 GDI+概述 236
8.1.1 GDI+的组成 236
8.1.2 新增功能 237
8.1.3 GDI+的接口类 239
8.1.4 编程模式的变化 243
8.2 图形绘制 247
8.2.1 使用GDI+步骤 247
8.2.2 坐标系统和变形 249
8.2.3 使用Pen对象绘制线条和形状 257
8.2.4 使用Brush对象填充形状 261
8.2.5 构造并绘制曲线 269
8.2.6 构造并绘制轨迹 271
8.2.7 重新着色 273
8.2.8 图形容器 280
8.2.9 区域与剪辑 282
8.3 文本与字体 285
8.3.1 构造字体系列和字体 285
8.3.2 绘制文本 286
8.3.3 设置文本格式 287
8.3.4 设定文本输出质量 290
8.4 GDI+图像处理 291
8.4.1 文件格式 291
8.4.2 Image和Bitmap类 293
8.4.3 DrawImage方法 293
8.4.4 图元文件 297
8.4.5 CImage类 298
8.4.6 示例——图像浏览器 298
第9章 多线程编程 301
9.1 进程和线程 302
9.1.1 使用多个线程 303
9.1.2 多线程的优点 303
9.1.3 多线程的缺点 303
9.1.4 线程类型 304
9.2 用户界面线程 304
9.2.1 启动用户界面线程 304
9.2.2 初始化线程 306
9.3 辅助线程 306
9.3.1 启动辅助线程 306
9.3.2 实现控制函数 307
9.4 挂起和恢复线程 307
9.5 终止线程 308
9.5.1 正常线程终止 308
9.5.2 过早终止线程 308
9.5.3 检索线程的退出代码 308
9.6 线程通信 309
9.6.1 示例——使用全局变量通信 309
9.6.2 示例——使用Windows消息通信 312
9.7 线程同步 313
9.7.1 线程安全类 313
9.7.2 Event对象 314
9.7.3 示例——使用Event对象 315
9.7.4 CriticalSection对象 316
9.7.5 示例——使用CriticalSection对象 317
9.7.6 Mutex对象 319
9.7.7 示例——使用Mutex对象 320
9.7.8 Semaphore对象 321
9.7.9 示例——使用Semaphore对象 322
9.8 调试多线程 323
9.8.1 “线程”窗口 324
9.8.2 利用“线程”窗口操作线程 324
9.8.3 线程调试提示 325
第10章 DLL编程 327
10.1 基础知识 328
10.1.1 概述 328
10.1.2 DLL的类型 329
10.2 使用动态链接库 334
10.2.1 DLL的入口函数DllMain() 334
10.2.2 从DLL导出 335
10.2.3 导入到应用程序 340
10.2.4 将可执行文件链接到DLL 345
10.3 调试DLL 347
10.4 示例——创建和使用Win32DLL 349
10.5 示例——创建和使用MFC DLL 352
第11章 ATL编程 359
11.1 概述 360
11.1.1 ATL简介 360
11.1.2 ATL基本技术 361
11.2 示例——简单的非属性化ATL项目 362
11.2.1 创建ATL项目 362
11.2.2 添加控件 364
11.2.3 为控件添加属性 367
11.2.4 更改绘图代码 368
11.2.5 添加事件 369
11.2.6 添加属性页到控件 372
11.2.7 测试 375
11.3 示例——使用ATL开发COM组件 378
第12章 STL编程 383
12.1 STL简介 384
12.2 算法 384
12.3 容器 388
12.4 迭代器 388
12.5 STL的其他部分 389
12.6 示例——list编程 390
12.6.1 创建项目 390
12.6.2 构造list 390
12.6.3 在list中插入元素 392
12.6.4 统计list中的对象 394
12.6.5 在list中查找对象 395
12.6.6 从list中删除元素 399
12.6.7 使用list的成员函数sort排序 401
12.7 小结 402
第13章 网络编程 403
13.1 WinSock编程 404
13.1.1 基础 404
13.1.2 MFC提供的类 407
13.1.3 使用CSocket类 410
13.1.4 示例——网上聊天应用程序 412
13.2 WinInet编程 424
13.2.1 Win32 Internet扩展 424
13.2.2 创建Internet客户端应用程序的MFC类 424
13.2.3 使用MFCWinInet类编写Internet客户端应用程序 424
13.2.4 Internet客户端类的前提条件 426
13.2.5 示例——简单的网页浏览器 427
13.3 ISAPI编程 432
13.3.1 ISAPI与CGI 432
13.3.2 ISAPI基础 432
13.3.3 示例——ISAPI服务器扩展编程 434
第14章 数据库编程 437
14.1 数据库基础 438
14.2 SQL 438
14.2.1 定义基本表和插入数据 438
14.2.2 SQL查询 439
14.2.3 SQL数据控制 442
14.2.4 定义视图及其他 442
14.2.5 数据字典 443
14.3 ODBC 444
14.3.1 基本概念 444
14.3.2 MFC的ODBC类 444
14.3.3 CDatabase类 445
14.3.4 CRecordset类 447
14.3.5 CRecordView类 454
14.3.6 示例——ODBC数据库编程 455
14.4 DAO简介 463
14.5 OLE DB/ADO 465
14.5.1 通用数据访问技术 465
14.5.2 OLE DB对象模型 466
14.5.3 ADO对象模型 467
14.5.4 ADO编程要点 468
14.5.5 示例——ADO编程 479
第15章 HTML帮助系统编程 485
15.1 概述 486
15.2 HTML帮助文件的制作和使用 488
15.2.1 HTML Help Workshop编辑窗口中的工具栏 489
15.3 示例——创建HTML帮助文件 490
15.3.1 创建项目及HTML页 490
15.3.2 设置项目选项 491
15.3.3 添加主题文件 492
15.3.4 添加目录和索引 493
15.3.5 设计窗口样式 494
15.3.6 区分上下文帮助 496
15.4 第三方Html帮助制作工具 498
15.4.1 ForeHelp 498
15.4.2 DocToHelp 499
15.4.3 RoboHelp 499
15.5 在程序中使用HTML帮助 499
15.5.1 HtmlHelp()函数 499
15.5.2 示例——区分上下文帮助 500
第16章 安装和部署项目 503
16.1 概述 504
16.1.1 Microsoft Windows安装程序 504
16.1.2 部署项目 504
16.2 设置部署项目属性 505
16.2.1 在“属性”窗口中设置常规项目属性 505
16.2.2 用“Install属性页”对话框配置相关属性 508
16.3 部署编辑器 510
16.3.1 打开部署编辑器 510
16.3.2 “文件系统”编辑器 510
16.3.3 注册表编辑器 511
16.3.4 “文件类型”编辑器 511
16.3.5 “用户界面”编辑器 511
16.3.6 “自定义操作”编辑器 512
16.3.7 “启动条件”编辑器 512
16.4 示例——用安装程序向导创建安装项目 512
16.5 示例——部署应用程序 515
16.5.1 修改Install安装项目属性 515
16.5.2 确定要重新发布的依赖文件 516
16.5.3 将Windows应用程序添加到安装程序中 517
16.5.4 添加共享系统文件 517
16.5.5 创建桌面快捷方式 517
16.5.6 创建“程序”菜单项 518
16.5.7 创建文件关联 519
16.5.8 为Windows应用程序添加注册表键 519
16.5.9 添加自定义安装对话框 520
16.5.10 为应用程序创建实例文件 520
16.5.11 添加启动条件检查Internet Explorer版本 521
16.5.12 生成和测试安装 521
附录A 虚拟键码表 523