引言 1
本书适合的读者 2
本书的内容 2
第一篇 设计理想的程序第1章用户界面设计 3
1.1 了解一个好的用户界面 3
目录 3
本书的使用方法 3
本书的组织形式 3
CD上的内容 4
1.1.1 可视性强而又耐看的外观设计 4
1.1.2有助于轻松有效地学习 4
1.1.3允许用户出错 5
1.2 设计主应用程序窗口 5
1.2.1 工具栏 6
1.2.2状态栏 6
1.3 研究菜单 6
1.3.1 创建和组织下拉式菜单 7
1.3.2使用级联式和弹出式菜单 9
1.3.3在运行期间改变菜单 11
1.4.1模态 12
1.4 对话框 12
1.4.2消息框(MsgBox)和输入框(InputBox) 13
1.4.3公用对话框 15
1.5 设计新颖的对话框 16
1.5.1 对话框之间的调度 16
1.5.2标记式对话框 17
1.6.1命令按钮 18
1.6.2选择框和选项按钮 18
1.6 对话框控件 18
1.6.3列表框和组合框 19
1.6.4使用控件表示数值数据 19
1.6.5进程栏(Progress Bar) 21
1.7 快捷操作 21
1.7.1 应用菜单和命令按钮助记符 21
1.7.2实现快捷击键 22
1.7.3使用双击 23
1.8在运行期间帮助用户 23
1.10小结 24
1.9可用性测试 24
第2章多文档接口 25
2.1 MDI应用程序特性 25
2.2用Visual Basic创建MDI应用程序 26
2.3管理MDI应用程序中的图标 28
2.4 使用对象变量 28
2.4.1 New关键字 29
2.4.2 Me关键字 30
2.5.1.1 活动窗口 31
2.5.1 增加菜单 31
2.5 增强MDI应用程序 31
2.5.1.2 窗口列表 33
2.5.2增加工具栏 36
2.5.3增加状态栏 38
2.5.4改变窗体标题 40
2.5.5增加工具提示 41
2.6 图标选择程序的创建 43
2.6.1调整图标和窗口尺寸 47
2.7创建文本编辑器 49
2.8小结 51
第3章使用Windows API 53
3.1 理解Windows API 54
3.1.1 动态链接库 54
3.1.2 说明一个DLL例行程序 54
3.1.3 传递参数 55
3.1.3.1按值或引用传递参数 56
3.1.3.2使用次序号 56
3.1.3.3传递字符串 57
3.1.3.4传递结构 59
3.1.3.5 Win 32 API考虑事项 59
3.2 使用窗口控制函数 60
3.2.1 管理窗口 60
3.2.2获得窗口信息 61
3.2.3产生窗口的父子层次结构 63
3.3 引入菜单函数 70
3.3.1定制带位图的菜单 70
3.3.2使用弹出式菜单 71
3.3.3在菜单中显示位图 72
3.4.1 GDI对象——设备环境 75
3.4 图形函数 75
3.4.2创建和选择GDl对象 76
3.4.3用特殊效果显示位图 77
3.5 多媒体函数 88
3.5.1使用声音 88
3.5.2使用视频 89
3.5.3使用WinHelp函数 90
3.6.1图形例行程序 92
3.6 在Win 32系统下使用Windows API 92
3.6.2 DOS系统调用 93
3.7小结 93
第二篇 增加客户/服务器数据库功能 97
第4章先进的数据库前端 97
4.1 一个简单的前端 98
4.1.1从一个简单的数据输入窗体开始 98
4.1.2增加浏览键 99
4.2 多窗口前端 101
4.2.1使用框架创建页面 102
4.2.2 多窗体 104
4.2.3多文档接口(MDI)窗体 105
4.2.4链接各窗体的数据 107
4.2.5 最优化使用有效的屏幕空间 108
4.2.5.1收缩和移动窗体 108
4.2.5.2创建多页面 110
4.3 其他输入方法 115
4.3.1 使用其他控件 115
4.3.1.1从列表中选取项目 115
4.3.1.2使用单选按钮(Option Buttons) 117
4.3.1.3使用数字增减钮控件 119
4.3.2 使用数据约束网格 120
4.3.2.1建立数据约束网格 120
4.3.2.2 用网格作为主要的输入方法 121
4.3.2.3用户定义的查询 121
4.3.3 双栏选取列表(Two-Column Pick List) 123
4.4 输出方法 125
4.4.1 静态图形 126
4.5使用颜色 128
4.4.2 动态图形 128
4.6小结 129
第5章数据管理及数据驱动程序设计 130
5.1对数据管理的理解 130
5.2 使用数据库管理系统 132
5.2.1 实例解说 132
5.2.2 数据库设计 134
5.2.2.1确定数据需求 134
5.2.2.2 数据来源 134
5.2.2.3对表中数据分组 135
5.2.2.4数据规范化 136
5.2.2.5表的类型 137
5.2.3创建数据库 137
5.2.4输入数据 139
5.3数据有效性 141
5.3.1 引擎级有效性 141
5.3.2程序有效性 142
5.3.3 离线或批数据有效性 142
5.4数据完整性 143
5.6数据库维护 144
5.5结构化查询语言(SQL) 144
5.7.1建立输入表 145
5.7 高级数据管理概念 145
5.7.2 使用临时表 148
5.7.2.1创建临时表 149
5.7.2.2删除临时表 149
5.7.2.3把临时表放入单独的数据库 150
5.7.2.4用Clone方法复制 151
5.7.3输出数据表 151
5.7.4.1存贮多个事例 153
5.7.4 事例管理 153
5.7.4.2处理特定事例数据 154
5.7.4.3处理通用数据 155
5.7.4.4比较编程 156
5.7.5 数据驱动程序设计 159
5.7.5.1 传统的程序设计方法 160
5.7.5.2数据驱动程序设计方法 161
5.8小结 163
6.1 客户/服务器应用程序设计 164
第6章使用ODBC 164
6.2 理解ODBC 166
6.2.1ODBC结构 166
6.2.2 一致性级别 167
6.2.2.1 API一致性级别 167
6.2.2.2 SQL一致性 168
6.2.3单束式和多束式驱动程序 169
6.3配置ODBC 169
6.3.1 使用ODBC管理器 170
6.3.2使用RegisterDataBase方法 171
6.4 附加ODBC表 173
6.4.1选择数据源 173
6.5使用服务器数据 178
6.6活动查询 181
6.7在服务器数据库上创建表 182
6.8小结 189
第7章Jet引擎和ODBC 190
7.1 Jet引擎的组成部分 190
7.1.1数据访问对象 191
7.1.2 查询引擎 192
7.1.3 Jet数据库控制系统 193
7.1.4外部ISAM接口 193
7.1.5附加一张Excel 5.0电子表格 194
7.1.6 ODBC接口 195
7.2 ODBC数据库连接 195
7.2.1服务器上连接的管理 196
7.2.2客户机上连接的管理 197
7.2.3优化连接使用 199
7.3 附加的数据 201
7.3.1附加表 201
7.3.2附加视图 202
7.4查询处理 203
7.4.1ORDER BY 204
7.4.2 GROUPBY 205
7.4.3 TOP N 205
7.4.4查询的查询 206
7.4.5 LEFT JOIN 207
7.4.6 不同类的连接 208
7.5穿越查询 210
7.6小结 211
第8章现代客户/服务器计算技术 212
8.1了解计算机技术的历史 212
8.2客户 214
8.3 服务器 214
8.3.1文件服务器 214
8.3.2打印服务器 215
8.3.3 图形用户接口服务器 216
8.3.4图像服务器 217
8.3.5数据库服务器 217
8.3.6包装(Wrappered)服务器 218
8.4客户/服务器计算技术的优点 219
8.5理想系统的障碍 219
8.6 可行技术 220
8.6.1硬件 220
8.6.2中间件 222
8.7分布式对象 223
8.7.1 对象模型 224
8.7.1.1 通用对象请求者代理体系结构(CORBA) 225
8.7.1.2组件对象模型(COM) 225
8.7.1.3比较COM和CORBA 227
8.8客户/服务器计算技术的未来 228
8.9小结 228
第9章客户/服务器数据库 230
9.1客户/服务器数据库 230
9.3安装SQL Server 231
9.2 Microsoft SQL Server 231
9.4创建数据库 232
9.5创建表 234
9.6向表添加数据 236
9.7进行ODBC连接 237
9.8 访问SQL Server 238
9.8.1授予和回收权限 240
9.8.2附加表到Jet引擎数据库 241
9.9查询表 242
9.10用数据控件浏览SQL数据库表 243
9.11.1 从VisualBasic调用过程 245
9.11 存贮过程 245
9.12 小结 249
第10章SQL 250
10.1 SQL的全面概述 251
10.1.1 对面向集合的理解 251
10.1.2 基于SQL的应用程序的类型 252
10.2创建数据库 254
10.3 创建表 254
10.3.1 主码 256
10.4向表添加数据 257
10.5改变表的结构 262
10.6改变表中的数据 264
10.7删除数据和表 267
10.8 从表中检索数据 271
10.8.1 简单的WHERE子句 272
10.8.2 复合的WHERE子句 272
10.8.3 BETWEEN和NOT BETWEEN 275
10.8.4 LIKE和NOT LIKE 276
10.8.5 IN和NOT IN 277
10.8.6 IS NULL和IS NOT NULL 278
10.8.7 ORDER BY 279
10.8.8计算得到的列 279
10.9连接表 281
10.10小结 285
第三篇增强应用程序 289
第11章OLE自动化 289
11.1 OLE的定义 289
11.1.1文档核心计算技术 290
11.1.2部件软件 291
11.1.3 OLE术语 291
11.2 什么是OLE自动化 292
11.2.1 OLE自动化对象 293
11.3 OLE和系统注册数据库 294
11.4 对象链接和嵌入 295
11.4.1 链接的对象 296
11.4.2嵌入的对象 296
11.4.3就地激活 297
11.4.4.1 设计阶段的OLE控件 298
11.4.4 VB的OLE控件 298
11.4.4.2 运行阶段的OLE控件 300
11.5 用OLE自动化管理对象 301
11.5.1 创建一个新对象 302
11.5.2链接已存在的对象 305
11.5.3 处理对象 307
11.5.3.1 访问对象的属性 307
11.5.4关闭对象 309
11.5.3.2执行方法 309
11.6 限制 310
11.6.1 数组和用户自定义类型 310
11.6.2命名参数 311
11.6.3集合 311
11.7小结 312
第12章OLE服务器 313
12.1 什么是OLE服务器 313
12.1.1服务器的类型 313
12.2 VisualBasic OLE自动化对象 315
12.2.1部件对象模型 315
12.1.2 Visual BasicOLE服务器 315
12.2.2 Visual Basic类 316
12.2.3设计一个对象层次结构 316
12.3 在Visual Basic中创建一个OLE服务器 318
12.3.1 增加类 319
12.3.1.1类的Public属性 320
12.3.1.2 类的可创建性属性 320
12.3.2 定义Public的方法和属性 321
12.3.2.1 Calc类 321
12.3.2.2 Picture类 322
12.3.2.3有关作用域的问题 323
12.3.2.4初始化代码 324
12.3.2.5 Application对象 324
12.3.3 完成创建的OLE服务器 325
12.3.3.1 开发用户界面 325
12.3.3.2选择项目选项 326
12.3.3.3运行应用程序 327
12.4 使用Visual BasicOLE服务器 328
12.4.1 注册OLE服务器 328
12.4.2从系统登记簿删除一个对象应用程序 329
12.4.3启动一个对象应用程序 329
12.5 调试你的对象应用程序 330
12.5.1运行多个应用程序版本 332
12.5.2将控制者中的引用指向应用程序 333
12.6标准和准则 333
12.6.1标准对象 333
12.6.2 必需的属性 334
12.6.2.1集合方法 334
12.6.2.2Item方法 334
12.6.2.4 Remove方法 335
12.6.2.3 Add方法 335
12.6.3 Application对象的属性和方法 336
12.6.4命名准则 336
12.7小结 337
第13章OLE容器类 338
13.1 什么是OLE客户 338
13.2 OLE控件和客户 339
13.2.1方法(Method) 340
13.2.2属性(Property) 341
13.3 嵌入 342
13.2.3事件(Events) 342
13.3.1使用剪贴板 345
13.4链接 346
13.4.1使用剪贴板 348
13.5用剪贴板粘贴特殊对象 349
13.6动词(Verb) 351
13.7 控制应用程序 352
13.7.1 自动使用对象 352
13.7.2 自动使用OLE控件 358
13.8小结 359
第14章媒体控制接口 361
14.1 多媒体系统 361
14.1.1 用于开发的硬件 361
14.1.2 用于播放的硬件 362
14.1.3开发软件 363
14.2 多媒体控制接口的操作 363
14.2.1 音频CD设备 364
14.2.2动画 364
14.2.3声波文件 365
14.3 多媒体的术语 366
14.2.4图形图象 366
14.2.5其他多媒体设备 366
14.3.1什么叫CD轨迹(Track) 367
14.3.2时间索引 367
14.3.3采样 368
14.3.4什么叫帧 369
14.3.5使用视频压缩 369
14.3.6图像压缩 370
14.4.2TimelFormat属性 372
14.4.1DeviceType属性 372
14.4 多媒体控制接口的命令 372
14.4.3Position属性 373
14.4.4From/To属性 374
14.4.5处理轨迹信息 374
14.4.6 Mode属性 375
14.4.7 Command属性 375
14.4.8 Notify属性和Done事件 376
14.4.9 UpdateInterval属性和StatusUpdate事件 376
14.5.1音量控制 377
14.5 超越Visual Basic MCI控件——使用多媒体API 377
14.5.2 多媒体DLL命令字符串 378
14.6小结 379
第15章多媒体的应用 380
15.1多媒体MCI控件 380
15.2 用CD Jammer样例程序进行播放 383
15.2.1选择按钮控件 384
15.2.2使用轨迹访问控件 386
15.2.4 CD Jammer的特性 389
15.2.3数据库访问控件 389
15.2.4.1 CD的自动识辨 390
15.2.4.2 制作动态片头屏幕 391
15.2.4.3发声控制 394
15.2.4.4使用LED类型的显示 397
15.3 小结 401
第16章图形:数据分析 402
16.1 增强用户界面 402
16.1.1 使用线(Line)和形状(Shape)控件 403
16.1.2 窗体中的图片 405
16.1.2.1在窗体中装载图片 406
16.1.2.2使用图像(Image)控件 407
16.1.2.3使用图片框(PictureBox)控件 408
16.1.3在窗体中创建不可见按钮 409
16.1.4 用图像(Image)控件创建工具栏 411
16.1.4.1创建工具栏 411
16.1.4.2处理多态按钮 412
16.1.4.3动画按钮 414
16.1.5.1设置PicClip控件 415
16.1.5 用图片剪切(PicClip)控件管理图片 415
16.1.5.2使用随机访问方法 416
16.1.5.3使用数举方法 416
16.1.6 使用动态按钮(Animated Button)控件 419
16.2 创建和管理图形 421
16.2.1 创建图形 421
16.2.1.1使用Line方法 421
16.2.1.2使用Circle方法 423
16.2.1.3使用Pset方法 424
16.2.1.4使用PaintPicture方法 424
16.2.1.5使用Print方法 425
16.2.1.6 Point和Cls方法 426
16.2.2 便笺簿应用程序 426
16.2.2.1建立工具栏 426
16.2.2.2使用各种画图工具 427
16.2.2.3创建复原(Undo)特性 431
16.2.2.4 保存图片 431
16.2.3位图注解 431
16.3 用图形分析数据 432
16.2.4使用数据库存储图片 432
16.3.1 使用图形(Graph)控件分析数据 433
16.3.2 创建你自己的数据分析图形 435
16.3.2.1 创建一简单的图表 435
16.3.2.2使用用于不同图表类型的方法 437
16.3.2.3确定点在图表中的位置 437
16.3.2.4动态(或时间相关)图表 439
16.4小结 442
第17章通信基础 443
17.1 串行通信 443
17.1.1通信硬件 444
17.1.2协议 447
17.2串行卡 448
17.3 通信控件 449
17.3.1设计期间的属性 452
17.3.2运行期间的属性 458
17.4 调制解调器和AT命令设置 463
17.4.1对调制解调器编程 464
17.4.2调制解调器寄存器 465
17.5小结 466
第18章开发联机帮助 468
18.1 了解Windows帮助系统 468
18.1.1 了解帮助系统的术语 469
18.1.2 从VisualBasic菜单中调用帮助 471
18.1.2.1控制帮助系统操作 471
18.1.2.2运用Windows公用对话框 472
18.1.2.3使用Windows API调用 473
18.1.3 链接上下文关联的帮助 475
18.2.1 策划文档编制 476
18.2 创建你的帮助项目 476
18.1.3.1 映像上下文字符串和HelpContextID 476
18.2.2加入帮助编译器代码 478
18.2.3 为查找建索引 479
18.2.4 加入浏览序列 480
18.2.5分配建立标记 481
18.2.6 将主题与跳转及弹出文本相链接 481
18.2.6.1 跳转到位于其他帮助文件中的主题 481
18.2.6.2跳转到二级窗口 482
18.3 标识帮助项目部件 482
18.3.2 了解帮助项目文件 483
18.3.1使用具有热点的位图和图形 483
18.4 创建帮助项目文件 486
18.4.1使用项目文件节 486
18.4.2设置其他的编译器选项 488
18.4.3 使用Microsoft帮助编译器 489
18.4.3.1 判断和调试编译器错误 490
18.4.3.2测试编译过的帮助文件 490
18.5 使用帮助引擎特性 491
18.5.1设置附加菜单 491
18.5.2附加额外的按钮 492
18.5.3 使用定制的DLL 493
18.6小结 493
第19章网络应用程序 494
19.1 了解网络应用程序的设计特征 494
19.1.1保证数据一致性 495
19.1.2允许对数据库进行同时访问 496
19.1.3安全与备份 497
19.1.4性能和调试 497
19.2 对等网络的使用 498
19.2.1使应用程序能在网络上运行 499
19.2.2从客户端连接 499
19.2.3拓宽对等连网的功能 500
19.3 使用专用文件服务器的网络 501
19.3.1 专用文件管理器网络上的应用程序共享 503
19.4 桌面数据库的使用 504
19.4.1 为数据库设置安全性 505
19.4.2激活登录过程 506
19.5.1 创建一个新的管理员账户 507
19.5 工作组数据库的使用 507
19.5.2修改数据库和对象的所有权 508
19.5.3 创建和管理用户和组账户 509
19.5.4分配和取消权限 510
19.5.5加密数据库 511
19.6使用客户/服务器数据库 511
19.7 锁定级别 512
19.7.1 页面锁定 513
19.7.2记录集锁定 515
19.7.3 数据库锁定 517
19.7.3.1 积极锁定 519
19.7.3.2 消极锁定 520
19.8小结 521
第20章OLE控件、Add-In和32位DLL 522
20.1在32位环境下工作 523
20.2 OLE控件 524
20.2.1 Farpoint技术公司 524
20.2.2 VideoSoft 525
20.2.3 Sylvain Faust公司(SFI) 526
20.2.4 Lenel系统国际公司 528
20.2.5 MicroHelp公司 529
20.2.6 AccuSoft公司 530
20.3 OLE自动化服务器 531
20.3.1衍生代码 531
20.3.2 理解类 532
20.3.2.1 创建一个类的实例 533
20.3.2.2 自组合引起的潜在的递归 537
20.3.2.3检查模块文件 538
20.3.3设置项目选项 539
20.3.4建立Add-In应用程序 540
20.3.5使Add-In有效 542
20.4 32位动态链接库 545
20.4.1单一码的混淆 546
20.4.2调整用户自定义类型 546
20.4.3 用Visual C++建立支持单一码的DLL 548
20.4.3.1 使用Byte数组技术 554
20.5小结 556
第21章VB代码的优化 561
第四篇 检验应用程序的效率 561
21.1 测量程序性能 562
21.1.1 测量程序速度 562
21.1.2测量程序大小 563
21.2 改善对象的性能 564
21.2.1 显示/隐藏与装载/卸载 564
21.2.2反馈给用户 567
21.2.3 AutoRedraw属性 568
21.3.1.1 图片框与图像控件 569
21.3.1 LoadPicture方法 569
21.3 改善图形的性能 569
21.3.1.2装载与嵌入图片 571
21.4 改善代码性能 575
21.4.1 内存的类型及其大小 576
21.4.2 显式的变量说明 576
21.4.3 固定长度字符串与可变长度字符串 577
21.4.4 固定长度数组与可变长度数组 579
21.4.5调用一个动态链接库的例行程序 581
21.4.6标签(Label)控件与文本框(Text Box)控件 582
21.5.2设置级别处理 583
21.5.1 索引 583
21.5改善数据库性能 583
21.6小结 584
第22章VB与VBA 585
22.1 比较Visual Basic 4和VBA之间的不同之处 585
22.2 总结语法差别 587
22.2.1 理解公共语法 587
22.2.1.1 分析Word 7语法差别 587
22.2.1.2分析Microsoft Access 2语法差别 588
22.2.2 理解Visual Basic 4的外延性 590
22.2.1.3分析Excel 7和Project 4差别 590
22.2.2.1 使用Command关键字 591
22.2.2.2在VB中使用设备环境 591
22.2.2.3在VB中使用对象引用 593
22.2.3比较环境差别 594
22.3 回顾对象差别 594
22.3.1比较Visual Basic和VBA窗口对象 595
22.3.2 比较Visual Basic和VBA控件对象 596
22.3.2.1评估控件事件差别 596
22.3.2.2评估控件属性和方法差别 599
22.4.1 使用ODBC设施 601
22.4 注意数据库访问的差别 601
22.4.2 使用DAO模型设施 602
22.4.2.1 在VBA中引用DAO 2.5库 602
22.4.2.2 测试DAO 2.5对象库引用 603
22.4.3 使用OLE定制控件 605
22.4.3.1 注册OLE定制控件 606
22.4.3.2 用OLE定制控件编程 606
22.5 在VB和VBA之间移植代码 607
22.6 使用VB类库 608
22.5.1 处理事件限制 608
22.5.2转换属性 608
22.6.1 开发和利用部件 609
22.7小结 610
第23章使用DLL的混合语言开发 611
23.1 什么是动态链接库 611
23.1.1静态链接 612
23.1.2动态链接 612
23.2.2 第三方产品 613
23.2.1 Windows APl 613
23.2 在VB中使用DLL 613
23.2.3 定制DLL 614
23.3一个简单的Windows资源监视器 614
23.4通过Windows APl调用来设置控件的属性 616
23.5 Declare语句 617
23.5.1语法 618
23.5.2命名转出过程 618
23.5.3 使用别名 618
23.5.3.3 DLL过程的次序号 619
23.5.3.2重复标识符 619
23.5.3.1 无效过程名 619
23.5.4DLL以及Windows的搜索路径 620
23.5.5 参数列表 621
23.5.5.1按引用传递参数 621
23.5.5.2按值传递参数 621
23.6函数与子例程的比较 621
23.7 数据类型间的转换 622
23.7.1 比较C和VB的数据类型 622
23.7.3传递数组 624
23.7.2 处理变体类型(Variant) 624
23.7.4 处理字符串 626
23.7.5 内存缓冲区和二进制数据 627
23.7.6处理用户自定义类型 627
23.7.7传递参数给DLL过程 628
23.8用Windows API来绘图 628
23.9 调试技巧 632
23.9.1 检查Declare语句 633
23.9.2检查过程调用 633
23.9.5 DLL可能会导致Windows崩溃 634
23.9.6考虑堆栈空间 634
23.9.3双重检验数组 634
23.9.4检查路径 634
23.10使用INI文件 635
23.11 实用样例 637
23.11.1等待一个外壳进程结束 637
23.11.2使一个窗口保持在顶层 638
23.11.3调用Windows帮助文件 639
23.12小结 639