第1章WindoWs编程和面向对象技术 1
1.1Windows发展历史 1
目 次 1
1.2Windows操作系统特点 2
1.3 Windows应用程序设计的特点 2
1.3.1事件驱动的程序设计 3
1.3.2消息循环与输入 4
1.3.3图形输出 5
1.3.4用户界面对象 6
1.3.5资源共享 9
1.3.6 Windows应用程序组成 9
1.4 Windows应用程序的开发工具 11
1.5面向对象和Windows编程 12
2.1 Visual C++可视化集成开发环境 15
第2章使用Visual C++5.0 15
2.1.1项目工作区 16
2.1.2 AppWizard(应用程序向导) 18
2.1.3 ClassWizard(类向导) 19
2.1.4 WizardBar(向导工具条) 19
2.1.5 Component Gallery(组件画廊) 19
2.1.6 Developer Studio的一些快捷特性 20
2.2创建、组织文件、工程和工作区 21
2.2.1新建工程 21
2.2.2新建工作区 22
2.2.3增加已有文件到工程中 22
2.2.4打开工作区 22
2.3 Win32开发 23
2.3.1抢先式多任务和多线程 23
2.2.5设置当前工程 23
2.3.2连续的地址空间和先进的内存管理 24
2.3.3内存映射文件 26
2.3.4 Win32s:Windows 3.x对Win32API的支持 26
2.3.5 Win32编程基础 26
2.4 MFC编程 29
2.4.1 MFC历史 29
2.4.2 MFC类库概念和组成 31
2.4.3 MFC的优点 35
2.4.4 MFC对消息的管理 36
2.4.5学习MFC的方法 39
2.5移植C Windows程序到MFC 39
2.6 Visual C++5.0新特性 40
3.1编写第一个窗口程序 42
第3章窗口、菜单与消息框 42
3.2 AppWizard所创建的文件 46
3.2.1工作区、项目文件和make文件 46
3.2.2应用程序源文件和头文件 46
3.2.3资源文件 47
3.2.4预编译头文件:STDAFX.CPP,STDAFX.H 47
3.3编译和链接Hello程序 47
3.4应用程序执行机制 49
3.4.1 WinMain函数 49
3.4.2应用程序类 51
3.5 几种窗口类型 53
3.5.1框架窗口 53
3.5.2窗口的创建 54
3.5.3注册窗口 56
3.5.4关闭和销毁窗口 57
3.5.5窗口激活 57
3.6.1编辑菜单资源 58
3.6使用菜单 58
3.6.2用ClassWizard自动映射菜单消息和成员函数 59
3.6.3手工添加代码 61
3.7更新命令用户接口(UI)消息 64
3.7.1用户接口更新原理 64
3.7.2用户接口更新机制编程 65
3.8快捷菜单 66
第4章工具条和状态栏 69
4.1工具条的可视化设计 69
4.1.1利用AppWizard自动创建 70
4.1.2手工创建 72
4.2工具条的编程技术 75
4.2.1命令处理 75
4.2.2命令更新 77
4.2.3按钮风格 78
4.2.4工具条的隐藏/显示 80
4.3状态栏的设计与实现 81
第5章对话框 85
5.1对话框和控件的基本概念 85
5.1.1对话框的基本概念 85
5.1.2控件的基本概念 86
5.2对话框模板的设计 86
5.3对话框类的设计 90
5.3.1对话框类的创建 91
5.3.2为对话框类加入成员变量 91
5.3.3对话框的初始化 93
5.3.4对话框的数据交换机制 95
5.3.5对话框的运行机制 96
5.3.6处理控件通知消息 98
5.4.1非模态对话框的特点 105
5.4非模态对话框 105
5.4.2窗口对象的自动清除 107
5.5标签式对话框 109
5.5.1标签式对话框的创建 109
5.5.2标签式对话框的运行机制 111
5.5.3标签式对话框的具体实例 112
5.6公用对话框 118
5.6.1 CColorDialog类 119
5.6.2 CFileDialog类 119
5.6.3 CFindReplaceDialog类 120
5.6.4 CFontDialog类 122
5.6.5 CPrintDialog类 123
5.6.6公用对话框的使用实例 124
第6章控件 137
6.1.1传统控件的控件通知消息 138
6.1传统控件 138
6.1.2静态控件 139
6.1.3按钮控件 140
6.1.4编辑框控件 143
6.1.5滚动条控件 147
6.1.6列表框控件 150
6.1.7组合框控件 154
6.1.8测试传统控件的一个例子 157
6.2新的Win 32控件 163
6.2.1 Win 32控件的通知消息 163
6.2.2旋转按钮控件 165
6.2.3滑尺控件 168
6.2.4进度条控件 170
6.2.5树形视图控件 171
6.2.6列表视图控件 176
6.2.7测试新型Win 32控件的一个例子 180
6.3技术总结 185
6.3.1所有的控件都是窗口 186
6.3.2控件的创建方法 186
6.3.3访问控件的方法 187
6.3.4控件及控件对象的删除 188
6.3.5控件通知消息 188
6.4在非对话框窗口中使用控件 188
6.4.1在表单视图中使用控件 188
6.4.2在工具条和状态栏中使用控件 189
6.5设计新的控件类 194
6.5.1创建标准控件类的派生类 194
6.5.2利用MFC的控件通知消息反射机制完善派生类的功能 194
6.5.3利用SubclassDlgItem函数动态连接控件和控件对象 195
7.1.1概念 197
7.1文档/视图概念 197
第7章文档/视结构 197
7.1.2两类文档/视结构程序 198
7.1.3使用文档/视结构的意义 199
7.2文档/视结构程序实例 199
7.2.1文档/视结构中的主要类 201
7.2.2设计文本编辑器的文档类 205
7.2.3文本编辑器的视图类 213
7.3让文档/视结构程序支持卷滚 222
7.3.1逻辑坐标和设备坐标 222
7.3.2滚动文档 224
7.4定制串行化 231
7.5不使用串行化的文档/视结构程序 233
7.5.1文件操作 240
7.5.2异常处理 241
8.1多文档界面窗口 246
第8章多文档界面(MDI) 246
8.2.1三种图形输出类型 247
8.2图形设备接口(GDI) 247
8.2.2 MFC中与GDI有关的类 248
8.2.3常见的绘图任务 251
8.3绘图程序 253
8.3.1 MDI应用程序框架 253
8.3.2设计绘图程序的文档类 255
8.3.3设计绘图程序的视图类 260
8.4访问当前活动视图和活动文档 269
8.5分割视图 270
8.6打印和打印预览 272
8.7支持多个文档类型的文档/视结构程序 276
8.8防止应用程序运行时自动创建空白窗口 277
9.1用户模块 279
第9章创建用户模块 279
9.2静态连接库 280
9.2.1创建静态库 280
9.2.2测试静态库 281
9.3创建动态连接库 282
9.3.1用户动态连接库(-USRDLL) 283
9.3.2 MFC扩展类库(-AFXDLL) 289
第10章数据库编程 293
10.1数据库、DBMS和SQL 293
10.2 ODBC基本概念 294
10.3 MFC的ODBC类简介 295
10.4 CDatabase类 296
10.5 CRecordset类 296
10.5.1动态集、快照、光标和光标库 296
10.5.2域数据成员与数据交换 298
10.5.4记录集的建立和关闭 299
10.5.3 SQL查询 299
10.5.5滚动记录 302
10.5.6修改、添加和删除记录 303
10.6 CRecordView类 304
10.7学习Enroll例程 306
10.7.1注册数据源 307
10.7.2 Enroll的第一个版本 308
10.7.3 Enroll的第二个版本 312
10.7.4 Enroll的第三个版本 316
10.8 DAO 321
10.8.1什么是DAO 321
10.8.2 DAO和ODBC的相似之处 321
10.8.3 DAO的特色 322
10.9自动注册DSN和创建表 323
10.8.4 ODBC还是DAO 323
10.9.1 自动注册DSN 324
10.9.2用ODBC创建表 325
10.9.3用DAO创建表 326
第11章多媒体编程 328
11.1调色板 328
11.1.1调色板的原理 328
11.1.2调色板的创建和实现 330
11.1.3使用颜色的三种方法 331
11.1.4与系统调色板有关的消息 332
11.1.5具体实例 333
11.2位图 337
11.3依赖于设备的位图(DDB) 337
11.3.1 DDB的创建 337
11.3.2 DDB的用途 338
11.4与设备无关的位图(DIB) 340
11.4.1 DIB的结构 341
11.4.2编写DIB类 342
11.4.3使用CDib类的例子 347
11.5动画控件 350
11.5.1动画控件的使用 351
11.5.2动画控件的局限 352
11.6 Win 32的多媒体服务 353
11.6.1高级音频函数 353
11.6.2 MCI 355
第12章多线程与串行通信 360
12.1多任务、进程和线程 360
12.1.1 Windows 3.x的协同多任务 360
12.1.3进程与线程 361
12.1.2 Windows 95/NT的抢先式多任务 361
12.1.4线程的创建和终止 362
12.2线程的同步 363
12.2.1为什么需要同步 363
12.2.2等待函数 364
12.2.3同步对象 365
12.2.4关键节和互锁变量访问 367
12.3串行通信与重叠I/O 367
12.3.1串行口的打开和关闭 367
12.3.2串行口的初始化 368
12.3.3重叠I/O 370
12.3.4通信事件 371
12.4一个通信演示程序 372
附录A Visual C++程序的调试 389
附录B 从Borland C++OWI移植到Visual C++MFC 394
附录C访问因特网上的Visual C++热门站点 399