第一部分WindoWs95与VisualC++4. 1
目录 1
第1章Windows95特色总览 2
1.1引言 2
1.2用户界面 2
1.2.1工作台 3
1.2.2任务条 3
1.2.5回收站 4
1.2.6Windows资源管理器 4
1.2.4网上邻居 4
1.2.3我的电脑 4
1.2.7快捷键 5
1.2.8属性表 6
1.3体系结构 6
1.3.1抢占式多任务操作系统 6
1.3.2VxD 7
1.3.332位文件系统体系结构 8
1.3.4内存管理 8
1.4即插即用 9
1.5.1注册表 11
1.5系统管理 11
1.5.2用户管理 12
1.5.3系统管理 12
1.5.4网络管理 13
1.6稳健性 13
1.6.1局部重新引导 13
1.6.2进程结束时VxD的线程清除机制 14
1.7设备支持 15
1.6.3每个线程状态的跟踪 15
1.6.4虚拟设备驱动程序参数的有效性检查 15
1.8打印 16
1.8.132位打印子系统 17
1.8.2对MS-DOS应用程序打印支持的改进 17
1.8.3支持延迟打印 17
1.8.4支持图像颜色匹配 18
1.8.5安装和配置打印机 18
1.9联网 21
1.11MicrosoftExchange 22
1.10通信 22
1.11.1Windows信报子系统:MAPI1.0 23
1.11.2MicrosoftExchange 24
1.11.3从桌面计算机发送和接收传真 25
1.12MicrosoftNetwork 26
1.13移动式计算 26
1.14多媒体 27
1.15国际化支持 28
1.16小结 29
2.2安装MicrosoftVisualC++4.0 30
2.2.1设置在线书籍在硬盘上的路径 30
第2章MicrosoftVisualC++4.0使用琐记 30
2.1引言 30
2.2.2设置例程在硬盘上的路径 31
2.3AppWizard 32
2.3.1使用AppWizard创建应用程序 33
2.3.2AppWizard的中文支持 33
2.4ControlWizard 34
2.5.2一切都是“树” 35
2.5.1低版本的工程文件转换 35
2.5工程工作空间 35
2.6ClassView 36
2.7ResourceView 37
2.7.1资源及资源编辑器 38
2.7.2在资源编辑器中激活ClassWizard 42
2.8FileView 43
2.9InfoView 44
2.9.2索引 45
2.9.3全文搜索 45
2.9.1F1键 45
2.9.4例程 46
2.10ClassWizard 46
2.10.1ClassWizard属性表 47
2.10.2使用ClassWizard增加函数 48
2.10.3使用ClassWizard增加变量 48
2.10.4使用ClassWizard增加代码 49
2.11WizardBar 49
2.12组件廊 50
2.12.1在工程中插入组件 50
2.12.3与他人共享组件 52
2.12.2创建自己的组件 52
2.13使用调试器 53
2.13.1使用多个调试窗口 53
2.13.2使用Just-in-Time调试 54
2.13.3控制和管理断点 54
2.13.4调试DLLs 55
2.13.5调试OLE应用程序 55
2.14.1构造应用程序的发行版本 56
2.14发行应用程序 56
2.13.6调试远程程序 56
2.14.2再发行DLL文件 57
2.15小结 58
第3章MFC4.0:Windows的C++应用程序框架 59
3.1引言 59
3.2MFC综述 59
3.2.1发展历史 59
3.2.2MFC4.0 60
3.3.1多平台 61
3.3MFC的移植性 61
3.2.3客户反馈驱动的改进 61
3.2.4MFC转换工具 61
3.3.2申请MFC许可 62
3.3.3工业标准的演化 62
3.4MFC4.0的新特征 63
3.4.1Windows公共控件类 63
3.4.2完全的OLE控件支持 63
3.4.3用DAO进行直接数据库访问 63
3.4.4新的公共对话框 63
3.5MFC3.0引入的特征 64
3.5.1增强的工具条 64
3.4.6简单MAPI支持 64
3.4.7WinSock支持 64
3.4.5线程同步对象 64
3.5.2小型边框窗口 66
3.5.3属性表 66
3.5.4Windows95用户接口 67
3.5.5Win32支持 67
3.5.6多线程 68
3.5.7Unicode支持 68
3.6.1C++模板 69
3.5.8共享32位DLLs 69
3.6C++语言语法支持 69
3.6.2C++异常 70
3.7数据库类 71
3.7.1数据库引擎类 71
3.7.2记录视 71
3.8OLE类 72
3.9MFC框架类 72
3.9.1命令 72
3.9.3打印和打印预览 73
3.9.2文档和视窗 73
3.9.4对话框数据交换和有效化 74
3.9.5上下文敏感帮助 74
3.10高级抽象 74
3.10.1报表视窗 75
3.10.2编辑视窗 75
3.10.3滚动视窗 75
3.10.4切分窗口 75
3.10.5控制条 75
3.12.1标准应用程序支持 76
3.12WindowsAPI类 76
3.12.2边框窗口 76
3.11兼容性 76
3.11.2VBX1.0(16位) 76
3.11.1OLE1.0支持 76
3.12.3图形/GDI 77
3.12.4对话框 77
3.12.5控件 77
3.13通用目的类 77
3.13.1运行时间类型信息 77
3.13.2对象永久性 78
3.13.3集类 78
3.13.4字符串 78
3.13.5文件 78
3.13.6时间和日期 78
3.14调试和诊断支持 78
3.15小结 79
4.2.1动画控件 83
4.1引言 83
4.2初识公共控件 83
第4章新用户界面的核心:公共控件 83
第二部分公共控件 83
4.2.2拖放列表框 84
4.2.3头控件 84
4.2.4热键控件 84
4.2.5图像列表 85
4.2.6列视控件 85
4.2.7进度指示器 85
4.2.8属性表 87
4.2.9多信息编辑控件 89
4.2.10状态条 89
4.2.11标签控件 90
4.2.12工具条 90
4.2.13工具提示 90
4.2.14游标 91
4.2.15树视控件 91
4.2.16滚动控件 91
4.3.1窗口类 93
4.3.2公共控件风格 93
4.3SDK支持 93
4.3.3通知消息 94
4.4MFC支持 95
4.5文档/视模型支持 95
4.6对话框资源编辑器支持 96
4.7小结 96
第5章工具条、状态条和工具提示 97
5.1引言 97
5.2概念释疑 97
5.3使用工具条编辑器 98
5.3.1创建新工具条资源 99
5.3.2把位图转换成工具条 99
5.3.3创建、移动和编辑工具条按钮 100
5.4编写ToolStatusTip例程 100
5.4.1实现目标 101
5.4.2实现细节 101
5.5程序演示 102
5.6代码分析 104
5.6.1使用CToolBar和CStatusBar 104
5.6.2在CMainFrame中实现工具条、工具提示和状态条 104
5.6.3组件廊产生当前日期和时间的状态条信息 105
5.7信息唾手可得 108
5.8小结 111
第6章动画控件、进度指示器、滚动控件和游标控件 112
6.1引言 112
6.2动画控件和进度指示器 112
6.2.1概念释疑 112
6.2.2编程考虑 112
6.2.4创建基于对话框的起始应用程序AnimateProgress 113
6.2.5编辑对话框资源 113
6.2.3实现目标 113
6.2.6添加代码 114
6.2.7程序演示 116
6.2.8信息唾手可得 116
6.3滚动控件和游标控件 118
6.3.1概念释疑 118
6.3.2编程考虑 119
6.3.3实现目标 119
6.3.4创建基于对话框的起始应用程序SliderSpin 119
6.3.5编辑对话框资源 119
6.3.6添加代码 120
6.3.8信息唾手可得 124
6.3.7程序演示 124
6.4小结 126
第7章快捷菜单、标签和属性表 127
7.1引言 127
7.2概念释疑 127
7.3编程考虑 128
7.4创建SDI起始应用程序ContextMenuTabProperty 129
7.5用组件廊增加Pop-upMenu组件 130
7.6.1添加PropertySheet组件 131
7.6用组件廊增加PropertySheet组件 131
7.6.2编辑属性页资源 134
7.6.3添加属性页类代码 134
7.6.4添加属性表类代码 140
7.6.5添加预览窗口类代码 141
7.6.6添加视类代码 141
7.7程序演示 143
7.8小结 144
8.3编程考虑 145
8.2什么是向导 145
8.1引言 145
第8章向导 145
8.4创建SDI起始应用程序Wizard 146
8.5用组件廊增加PropertySheet组件 147
8.5.1添加PropertySheet组件 147
8.5.2编辑属性页资源 148
8.6在属性页类中添加代码 150
8.6.1添加属性页控件变量 150
8.6.3使“适应性”属性页的“下一步”按钮不能 151
8.6.2使“您是…”属性页的“上一步”按钮不能 151
8.7修改属性表类代码 152
8.8在视类中添加代码 152
8.8.1添加编辑控件 152
8.8.2输出述职报告 153
8.9程序演示 158
8.10信息唾手可得 159
8.11小结 160
9.2.1概念释疑 161
9.2多信息编辑控件 161
第9章多信息编辑控件:兼谈长文件名、MAPI和注册表 161
9.1引言 161
9.2.2VisualC++4.0对多信息编辑控件的支持 163
9.3长文件名 163
9.3.1文件系统 163
9.3.2VisualC++4.0对长文件名的支持 165
9.3.3应用程序支持长文件名 165
9.4.1MAPI的概念和体系结构 167
9.4.2MAPI特征 167
9.4MAPI 167
9.4.3MAPI体系结构 168
9.4.4MAPI客户应用程序 168
9.4.5MAPI子系统 169
9.4.6MAPI缓冲池 169
9.4.7服务提供者 170
9.4.8VisualC++4.0对MAPI的支持 170
9.5注册表 171
9.5.1注册表简介 171
9.5.2注册数据库的结构 171
9.5.3预定义键 172
9.5.4更新注册表 173
9.5.5VisualC++4.0对注册表的支持 174
9.6编程考虑 174
9.7编写RichEditMail例程 174
9.7.1用AppWizard创建起始程序 174
9.7.2重用Wizard例程的代码 175
9.7.3RichEditMail对注册表的支持 175
9.7.4在程序中增加字符和段落格式化功能 176
9.7.5格式化述职报告 176
9.8程序演示 180
9.9信息唾手可得 181
9.10小结 187
第10章列视控件 188
10.1引言 188
10.2预备知识 188
10.2.1列视控件 188
10.2.2图像列表 189
10.2.3VisualC++4.0支持 189
10.3编程考虑 190
10.4.2制作列表项图标资源 191
10.4.1用AppWizard创建起始程序 191
10.4编写List例程 191
10.4.3初始化列视列表项 193
10.4.4获取列视控件项 196
10.4.5用四种视窗显示列表项 197
10.4.6响应列点击通知消息 200
10.5程序演示 201
10.6信息唾手可得 204
10.6.1结构体参考 204
10.6.2通知消息参考 207
10.6.3CListCtrl成员参考 208
10.6.4CImageList成员参考 210
10.7小结 211
第11章树视控件 212
11.1引言 212
11.2概念释疑 212
11.3编程考虑 212
11.4编写Tree例程 213
11.4.1用AppWizard创建起始程序 213
11.4.2制作列表项字符串和图标资源 214
11.4.3初始化树视列表项 215
11.4.4实现拖放编辑 219
11.4.5实现父项在打开和关闭时显示不同的图标的 222
11.5程序演示 223
11.6信息唾手可得 223
11.6.1结构体参考 224
11.6.2通知消息参考 226
11.6.3常数参考 227
11.6.4CTreeCtrl成员参考 228
11.7小结 230
12.1引言 232
12.2OLE产生的历史背景 232
第三部分OLE2.0 232
第12章OLE:一种集成技术 232
12.3OLE是一种集成技术 233
12.4OLE基石:COM 234
12.5结构化存储 235
12.6别名(Moniker) 238
12.7统一数据传输和OLE拖放 239
12.7.1数据格式和传输媒体 240
12.7.2剪贴板和拖放 241
12.8OLE文档 243
12.7.3OLE拖放和数据传输类 243
12.8.1嵌入与链接 244
12.8.2到嵌入的链接 245
12.8.3在位激活/可视编辑 245
12.9OLE自动化 246
12.10OLE控件 248
12.11小结 249
13.2准备知识 250
13.2.1COM 250
13.1引言 250
第13章编写COM组件对象/客户程序 250
13.2.2二进制标准 251
13.2.3组件对象 252
13.2.4接口 252
13.2.5全球唯一标识(GUID) 255
13.2.6IUnkown 255
13.2.7组件对象库 256
13.4.1用C++实现IDrawing 257
13.3编程考虑 257
13.4构造接口IDrawing 257
13.4.2用组件廊组件GUIDGenerator产生GUID 258
13.5构造COM组件程序SERVER.DLL 259
13.5.1构造工程 259
13.5.2增加对象和接口GUIDs 260
13.5.3创建组件对象类 260
13.5.4创建组件对象ID文件 260
13.5.6增加类的接口定义 261
13.5.5创建对象REG文件 261
13.5.7实现组件对象代码 262
13.6构造组件客户程序CLIENT.EXE 264
13.6.1创建起始应用程序 264
13.6.2构造C++类CDrawRect 264
13.6.3实现C++类CDrawRect 265
13.6.4绘制C++对象和COM组件 265
13.7小结 268
14.2.2链接对象 269
14.2.1在注册表中登记 269
14.2HIERSVR程序演示 269
14.1引言 269
第14章OLE文档:分析服务器程序HIERSVR 269
14.2.3嵌入对象 271
14.2.4剪贴板和拖放操作 273
14.3在应用程序类中初始化OLE服务器 273
14.4文档类提供的OLE服务器支持 275
14.4.1登记剪贴板格式 275
14.4.2创建或编辑嵌入对象 275
14.4.4在位编辑 276
14.4.3查找链接项 276
14.5实现服务器对象 277
14.5.1绘制OLE对象 277
14.5.2获取OLE对象大小 279
14.5.3谓词处理 279
14.5.4获取剪贴板对象 280
14.5.5显示文件数据 281
14.6在视类中实现OLE在位编辑 281
14.6.1设置绘图模式为MMANISOTROPIC 281
14.7.1拷贝 282
14.7在视类中实现剪贴板操作 282
14.6.2实现CServerView::OnDraw 282
14.7.2剪切 283
14.7.3清除 283
14.7.4粘贴 284
14.8在视类中实现拖放操作 285
14.8.1登记放目标对象 285
14.8.2处理鼠标左键按下消息 285
14.8.3实现CServerView::OnDragEnter 286
14.8.4实现CServerView::OnDragOver 287
14.8.6实现CServerView::OnDrop 288
14.8.5实现CServerView::OnDragLeave 288
14.9小结 289
第15章OLE文档:分析包容器程序OCLIENT 290
15.1引言 290
15.2演示OCLIENT 290
15.2.1支持链接和嵌入对象的在位编辑 290
15.2.2支持OLE公共对话框 290
15.2.3支持剪贴板和拖放操作 290
15.3OLE公共对话框 291
15.3.3“更改图标”对话框 292
15.3.1“插入对象”对话框 292
15.3.2“选择性粘贴”对话框 292
15.3.4“转换”对话框 293
15.3.5“编辑链接”或“更新链接”对话框 294
15.3.6“服务器占线”或“服务器没有响应”对话框 295
15.3.7“属性”对话框 295
15.4在应用程序类中初始化OLE包容器 295
15.5文档类提供的OLE包容器支持 297
15.5.1登记剪贴板格式 297
15.6.1客户对象状态 298
15.5.2重载CMainDoc::OnShowViews 298
15.6实现客户对象 298
15.6.2实现CRectItem::OnGetItemPosition 300
15.6.3实现CRectItem::OnChangeItemPosition 300
15.7在视类中实现矩形跟踪器 301
15.7.1矩形跟踪器(RectangleTracker) 301
15.7.2实现矩形跟踪器 301
15.8实现视类 304
15.8.1绘制OLE对象 304
15.8.2实现CMainView::OnInsertObject 306
15.8.4实现CMainView::OnSize 307
15.8.3实现CMainView::OnSetFocus 307
15.9在位编辑 308
15.10剪贴板和拖放操作 308
15.10.1有关粘贴的核心实现CMainView::DoPasteItem 309
15.10.2粘贴链接 313
15.10.3选择性粘贴 313
15.10.4拖放操作中自动滚动滚动条 315
15.11显示OIE对象的属性 316
15.12显示OLE客户对象 317
15.11.1获取快捷菜单 317
15.11.2显示属性对话框 317
15.13小结 319
第16章OLE自动化:用VC创建自动化对象 320
16.1引言 320
16.2自动化服务器/客户 320
16.3VisualC++4.0对OLE自动化服务器支持 321
16.3.1MFC框架支持 321
16.3.2ClassWizard支持 321
16.4.1创建OLE自动化服务器框架程序 322
16.3.3AppWizard支持 322
16.4在应用程序中使能OLE自动化 322
16.4.2分析派遣接口名 323
16.5分析AppWizard提供的代码 324
16.5.1自动化服务器的应用程序类 324
16.5.2自动化服务器的文档类 325
16.5.3创建OLE类型库 326
16.6实现DrawCircle的基本行为 327
16.7.1实现派遣接口的属性 328
16.7实现自动化属性和方法 328
16.7.2实现派遣接口的方法 330
16.7.3ClassWizard产生的对象定义库 332
16.8程序演示 333
16.9小结 334
第17章OLE自动化:用VC和VB访问自动化对象 335
17.1引言 335
17.2OLE自动化客户 335
17.3使用类型库 336
17.3.1ODL文件语法 336
17.3.2MkTyPLib:创建类型库工具 337
17.3.3ClassWizard对类型库的支持 338
17.4用VC编写自动化客户程序SetCircle 338
17.4.1创建框架程序 338
17.4.2从SliderSpin例程中获取可重用资源和代码 339
17.4.3创建.TLB文件重建派遣类 342
17.4.4引用和访问派遣类CDrawCircle 345
17.4.5程序演示 346
17.5.1构造SetCircle 347
17.5用VB编写自动化客户程序SetCircle 347
17.5.2实现SetCircle 348
17.5.3程序演示 350
17.6小结 350
第18章OLE控件:用VC创建控件 351
18.1引言 351
18.2OLE控件综述 351
18.2.1OLE控件的基本组成部分 352
18.2.2控件与控件包容器之间的交互 352
18.3.1事件 353
18.3名词释疑 353
18.2.4序列化 353
18.2.3OLE控件的激活和非激活状态 353
18.3.2方法 355
18.3.3属性 356
18.3.4序列化 357
18.3.5属性页 358
18.3.6许可 359
18.4OLEControlWizard支持 359
18.4.1工程选项 360
18.4.2控件选项 361
18.5编程考虑 362
18.5.1使用ControlWizard 362
18.5.2使用ClassWizard 363
18.5.3绘制Equation控件 366
18.5.4序列化Equation控件 369
18.5.5实现Equation属性页 369
18.5.6许可Equation控件 371
18.5.7测试Equation控件 373
18.6小结 377
19.3.1用AppWizard创建Solute框架 378
193用VC编写Solute 378
第19章OLE控件:用VC和VB访问控件 378
19.2OLE控件包容器 378
19.1引言 378
19.3.2插入控件 379
19.3.3组件廊和ClassWizard对工程的改变 382
19.3.4程序演示 388
19.4用VB编写Solute 388
19.4.1构造Solute 389
19.4.2实现Solute 390
19.4.3程序演示 391
19.5小结 392
第四部分在线帮助 394
第20章Windows95在线帮助综述 394
20.1引言 394
20.2帮助主题浏览器 394
20.2.1目录页 394
20.2.2索引 396
20.3.1过程主题 397
20.3标准帮助 397
20.3.2“这是什么?”主题 398
20.3.3定义性主题 400
20.3.4疑难解答主题 400
20.4性能支持帮助 400
20.5有关文件 402
20.5.1RTF脚本文件 402
20.5.2HPJ工程文件 404
20.5.3目录CNT文件 404
20.5.4配置GID文件 405
20.6RTF脚本语言 406
20.6.1脚注 406
20.6.2命令 407
20.6.3宏 409
20.7小结 412
第21章在线帮助基本应用:实现Windows95小程序帮助 413
21.1引言 413
21.2Windows95小程序在线帮助实现要点 413
21.3实现考虑 413
21.4.1用AppWizard起始应用程序 414
21.4制作基本帮助 414
21.4.2删除AppWizard生成的有关帮助文件 415
21.4.3用MicrosoftWord创建和编辑主题文件 418
21.4.4用HelpWorkshop创建和编辑目录文件 421
21.4.5用HelpWorkshop创建和编辑工程文件 423
21.5实现“这是什么?”主题调用 427
21.6程序演示 431
21.6.1帮助文件 431
21.6.2“这是什么?”主题 432
21.7小结 433
第22章在线帮助高级应用:实现图形、多媒体帮助和日积月累提示 434
22.1引言 434
22.2创建帮助图形 434
22.2.1帮助图形总览 434
22.2.2自适应显示位图 435
22.2.3放置位图 435
22.2.4创建热点图形 438
22.3创建多媒体帮助 441
22.3.1多媒体总览 442
22.3.2播放视频文件 443
22.3.3播放声波文件 443
22.4创建“日积月累”提示 445
22.4.1组件廊对“日积月累”的支持 445
22.4.2创建工程文件 446
22.4.3插入“日积月累”提示 446
22.4.4编写Tips.txt文件 447
22.4.5增加“日积月累”到“帮助”菜单 448
22.4.6“日积月累”对话框类申明 449
22.4.7提示显示顺序 451
22.4.8出错条件 453
22.4.9绘制提示标识和文本 455
22.4.10程序演示 456
22.5小结 456
第五部分安装向导 460
第23章Windows95应用程序的安装程序设计原则 460
23.1引言 460
23.2安装程序 460
23.3设计安装程序 460
23.5拷贝文件 461
23.4确定配置 461
23.6使用WININIT.INI文件替换DLLs 462
23.7设置环境 463
23.7.1设置初始化文件 463
23.7.2给注册表增加项目 463
23.7.3支持快捷菜单操作 464
23.8增加应用程序到“开始”按钮 465
23.9使用文件扩展名 465
23.10登记文档类型 467
23.11网络问题 467
23.12CD-ROM考虑 468
23.13安装字体 469
23.14删除应用程序 470
23.15小结 471
第24章使用InstallShieldSE制作安装向导 472
24.1引言 472
24.2InstallShieldSE总览 472
24.2.1InstallShield3 472
24.2.2InstallShield3International 473
24.3安装程序的组成部分 473
24.4.1术语定义 475
24.4InstallScript脚本语言 475
24.4.2安装程序脚本的主要组成部分 476
24.4.3系统变量 477
24.4.4操作符 478
24.5命令行程序 479
24.5.1COMPILE.EXE 479
24.5.2ICOMP.EXE 480
24.5.3SPLIT.EXE 481
24.5.4PACKLIST.EXE 482
24.6.1更正Template安装错误 483
24.6制作应用程序安装向导 483
24.6.2准备待发行的文件 484
24.6.3压缩和分裂待发行文件 485
24.6.4编写安装脚本Setup.rul 485
24.6.5编译安装脚本Setup.rul 496
24.6.6编写和编译包裹列表Setup.lst 496
24.7安装向导演示 497
24.8信息唾手可得 502
24.9小结 508
参考文献 511