第一部分 Windows编程入门 1
第1章 Windows 98与编程基础 1
1.1 Windows 98的新特性 1
1.2 Visual C++++6.0简介 1
1.3 Visual C++++的系统工具 3
1.3.1 向导 3
1.3.2 资源编辑器 3
1.4 编写HelloWorld普通窗口程序 5
1.5 Hello World Win32控制台程序 12
1.6 HelloWorld Java应用程序 14
1.7 Hello World Visual Basic应用程序 21
1.8 本章小结 23
第2章 菜单 24
2.1 菜单资源与菜单资源编辑器 24
2.1.1 菜单资源 24
2.1.2 菜单资源编辑器 25
2.2 CMenu类 27
2.3 菜单消息响应 28
2.4 菜单的UI机制和CCmdUI类 30
2.4.1 菜单的UI机制 30
2.4.2 CCmdUI类 31
2.5 普通下拉菜单 32
2.6 动态地改变菜单 38
2.6.1 得到当前的CMenu对象 38
2.6.2改变已存在的弹出式菜单 39
2.6.3动态地改变菜单示例 42
2.7 上下文菜单 44
2.8 本章小结 53
第3章 图形设备接口 54
3.1 图形设备接口简介 54
3.2.1 获取设备环境 55
3.2 设备环境 55
3.2.2 释放设备环境 56
3.2.3 使用设备环境 56
3.3 基本图形的绘制 57
3.3.1 画点 58
3.3.2 画直线 58
3.3.3 画折线 58
3.3.4 画曲线 59
3.3.5 画封闭曲线 60
3.3.6 绘制基本图形示例程序 62
3.4 文本输出 64
3.4.1 显示文本 65
3.4.2 设置文本的前景颜色 65
3.4.3 设置文本的背景颜色 65
3.4.6 设置文本对齐 66
3.4.5 设置字符间距 66
3.4.4 设置文本的背景模式 66
3.4.7 得到文本度量 67
3.5 GDI对象 68
3.5.1 画笔——CPen类 68
3.5.2 画刷——CBrush类 73
3.5.3 字体——CFont类 78
3.6 本章小结 81
第4章 鼠标、键盘与计时器 82
4.1 鼠标 82
4.1.1 鼠标消息 82
4.1.2 鼠标消息处理 84
4.1.3 捕捉鼠标 85
4.1.4 更改鼠标的显示模式 86
4.1.5 鼠标程序示例 86
4.2.1 输入焦点 101
4.2.2 系统键与非系统键 101
4.2 键盘 101
4.2.3 虚拟键代码 102
4.2.4 键盘消息及其映射函数 103
4.2.5 字符消息及其映射函数 104
4.2.6 使用插字符 105
4.2.7 键盘输入示例程序 106
4.3 计时器 113
4.3.1 启动和关闭计时器 113
4.3.2 响应计时器消息 114
4.3.3 计时器程序示例 115
4.4 本章小结 124
第5章 工具栏与状态栏 125
5.1 工具栏 125
5.1.1 工具栏资源 125
5.1.4 CToolBar类 127
5.1.3 工具栏与命令消息 127
5.1.2 工具栏按钮及其状态 127
5.1.5 工具栏的创建和处理 129
5.1.6 工具栏的停靠和漂浮 130
5.1.7 工具提示 131
5.1.8 工具栏程序示例 132
5.2 状态栏 157
5.2.1 CStatusBar类 157
5.2.2 状态栏的创建 158
5.2.3 状态栏的提示信息与状态指示 159
5.2.4 状态栏程序示例 159
5.3 本章小结 170
第6章 MFC异常处理 171
6.1 Visual C++++的异常处理机制 171
6.2 设置自己的terminateO函数处理器 172
6.3.1 CException 173
6.3.2 CMemoryException 173
6.3 MFC中的异常类 173
6.3.3 CNotSupportedException 174
6.3.4 CFileException 174
6.3.5 CArchiveException 175
6.3.6 CResourceException 175
6.3.7 COleException 175
6.3.8 CUserException 176
6.3.11 ClnternetException 177
6.4 Win32系统级异常 177
6.3.10 CDaoException 177
6.3.9 CDBException 177
6.5 本章小结 178
第7章 对话框和控件 179
7.1 对话框的种类 179
7.2 对话框资源 179
7.3 Windows标准控件 180
7.3.3 按钮控件 181
7.3.1 静态控件 181
7.3.2 编辑控件 181
7.3.4 列表框控件 182
7.4 对话框的创建和显示 183
7.5 CDialog对话框类 183
7.6 对话数据交换/对话数据验证 185
7.6.1 DDX机制 185
7.6.2 DDV机制 186
7.7 使用MFC的标准对话框 186
7.8 使用模式对话框 190
7.9 使用无模式对话框 202
7.10 本章小结 216
第8章 属性页和属性单 217
8.1 概述 217
8.1.1 创建属性页的模板资源 217
8.1.3 创建并显示模式CPropertySheet 218
8.1.4 创建并显示非模式CPropertySheet 218
8.1.2 创建CPropertyPage派生类 218
8.2 CPropertyPage与CPropertySheet 219
8.2.1 CPropertyPage 219
8.2.2 CPropertySheet 220
8.3 属性对话框示框 222
8.4 本章小结 232
第二部分 编程进阶 233
第9章 切分窗口与多视图 233
9.1 切分窗口 233
9.2 CSplitterWnd类 233
9.3 多视图选择 236
9.4 动态与静态切分窗口 236
9.5 滚动显示文本 237
9.6 单视图动态切分窗口 239
9.7 多视图静态切分窗口 246
9.8 本章小结 251
第10章 文档与视图 252
10.1 文档CDocument类 252
10.2 视图与CView类 253
10.3 文档-视图之间的相互作用函数 253
10.3.1 CView类的GetDocumentO函数 253
10.3.2 CDocument类的UpdateAllViewsO函数 254
10.3.3 CView类的OnUpdateO函数 254
10.3.4 CView的OnInitialUpdateO函数 255
10.4 最简单的文档/视图应用 256
10.5 格式视图与CFormView类 256
10.6 文档模板 257
10.6.1 文档模板的构成 257
10.6.2 文档模板的创建 258
10.7 MDI 258
10.8.1 利用AppWizard生成带动态切分窗的MDI应用程序 259
10.8 文档与视图关系的程序示例 259
10.8.2 生成带格式视图的MDI静态切分窗口 261
10.9 本章小结 276
第11章 内存管理技术 277
11.1 内存管理的发展 277
11.2 简单内存分配 278
11.2.1 栈结构分配 278
11.2.2 堆分配 278
11.3 Windows中的内存分配函数 280
11.4 分配可移动内存和可放弃内存 281
11.5 虚拟内存 282
11.6 共享内存 283
11.7 本章小结 285
12.1.1 动态链接和静态链接 286
12.1.2 创建动态链接库的原因 286
12.1 动态链接库的概念 286
第12章 动态链接库 286
12.1.3 动态链接库基础 287
12.2 普通的DLL 288
12.2.1 理解普通DLL的本质 288
12.2.2 动态加载DLL 290
12.2.3 实现普通的DLL应用程序 290
12.3.1 初始化扩展DLL 295
12.3 扩展MFCDLL 295
12.3.2 动态加载扩展DLL 296
12.3.3 输出扩展型DLL 296
12.3.4 实现MFC扩展DLL 296
12.4 本章小结 303
第13章 多任务编程 304
13.1 进程、线程和优先级 304
13.2 工作线程和用户界面线程的创建 305
13.2 工作线程 305
13.2.2 使用工作线程 307
13.2.3 创建用户界面线程 310
13.3 线程的挂起及唤醒 312
13.4 使线程休眠 312
13.5 线程同步 312
13.5.1 使用事件对象 313
13.5.2 使用临界段 323
13.5.3 互斥量 326
13.5.4 使用信号量 329
13.6 线程的终止 332
13.7 如何编写基于进程的多任务操作 335
13.8 本章小结 338
第三部分 ActiVeX 339
第14章 容器应用程序 339
14.1 实现容器应用程序的方法 339
14.2 创建框架容器应用程序 340
14.3.1 COleDocument类 342
14.3 深入探析容器应用程序 342
14.3.2 COleClientItem类 343
14.4 管理嵌入对象的大小和位置 345
14.5 使用鼠标选取项 348
14.6 删除嵌入的对象 353
14.7 本章小结 367
第15章 服务器应用程序 368
15.1 实现服务器应用程序的步骤 368
15.2 创建框架服务器应用程序 369
15.3 深入探析服务器应用程序 370
15.3.1 COleTemplateServer类 370
15.3.2 COleServerDoc类 371
15.3.3 COleServerItem类 372
15.4 定制应用程序的资源 373
15.5 完善视图类 377
15.6 完善应用程序的文档类 381
15.7 完善服务器项的类 386
15.8 运行服务器应用程序 396
15.9 本章小结 401
第16章 自动化 402
16.1 自动化概述 402
16.2 自动化服务器应用程序 403
16.3 创建自动化服务器应用程序 403
16.3.1 创建框架自动化服务器应用程序 403
16.3.2 定制应用程序的资源 404
16.3.3 完善视图类 406
16.3.4 完善应用程序的文档类 407
16.3.5 定义服务器的属性和方法 409
16.4 自动化客户应用程序 413
16.5 创建自动化客户应用程序 414
16.5.1 创建框架自动化客户应用程序 414
16.5.2 从类型库中创建类 415
16.5.3 编辑应用程序的资源 416
16.5.4 完善视图类 417
16.6 从客户程序控制服务器程序 424
16.7 本章小结 425
第17章 ActiveX控件 426
17.1 ActiveX/OLE空件 426
17.2 ActiveX控件的属性集 426
17.2.1 属性 426
17.2.2 事件 427
17.2.3 方法 428
17.3 创建框架ActiveX控件 428
17.4 完善应用程序的CEx17Ctrl类 431
17.5 增加库存事件和定制事件 433
17.5.1 增加库存事件 433
17.5.2 增加定制事件 435
17.6 增加属性 436
17.7 增加控件方法 438
17.8 本章小结 449