具体描述
了解Visual Basic的最新高级特性:
·使用数据控件、Data Environment或ADO对象模型访问和更新ADO数据库。
·开发多层客户—服务器应用程序。
·创建ActiveX DLL和EXE代码组件。
·创建自己的ActiveX控件。
·开发基于Web的数据库应用程序。
·创建DHTML和IIS Internet应用程序。
·创建HTML格式的帮助文件。
·在应用程序中加入Windows API方法。
·打包那些要在网络、光盘或Web上发布的应用程序和独立组件。
·为参加Microsoft Certified Systems Developer Desktop Application考试(微软认证系统开发员桌面应用程序考试,Exam 70-176)作准备。
本收不是简单地罗列对象的属性和方法,而是在介绍Visual Basic最新特性的同时,展示了翔实的编程技巧的例子。
作者简介
目录信息
1.1 visual basic
1.1.1 visual basic的版本
1.1.2 安装visual basic
1.2 配置visual basic环境
1.2.1 设置开发环境选项
1.3 调试
1.3.1 中断模式
1.3.2 调度技巧
1.3.3 调试窗口
1.4 visual basic
第2章 用户界面
2.1 用户界面
2.1.1 设计用户界面
2.1.2 对象
2.1.3 窗体事件
2.1.4 屏幕分辨率
2.1.5 mdi和sdi工程
2.1.6 使用forms集合
2.1.7 结束应用程序
.2.1.8 运行时动态添加和删除控件
2.1.9 在运行时添加和修改菜单命令
2.1.10 弹出菜单
2.2 windows通用控件
2.2.1 在界面中添加工具栏和状态栏
2.2.2 imagelist控件
2.2.3 toolbar控件
2.2.4 statusbar控件
2.2.5 treeview控件
2.2.6 listview控件
2.2.7 tabbed dialog控件
2.3 处理程序执行期间的错误
2.3.1 on error语句
2.3.2 err对象
2.3.3 编写错误处理例程
2.3.4 resume语句
2.3.5 错误处理
2.3.6 exit函数和exit sub语句
2.4 编写公有和私有过程
第3章 使用ado编写数据库程序
3.1 visual basic和数据库应用程序
3.1.1 通用数据访问
3.1.2 ole db
3.1.3 ado
3.1.4 数据库术语
3.1.5 创建由visual basic使用的数据库文件
3.2 使用ado数据控件
3.2.1 向工具箱中添加ado数据控件
3.2.2 数据控件和数据绑定型控件
3.2.3 查看数据库表——循序渐进
3.3 绑定型datalist和datacombo控件的使用
3.3.1 创建datalist或datacombo控件
3.3.2 添加下拉列表——循序渐进
3.4 在代码中定位数据库记录
3.4.1 recordset对象
3.4.2 使用movenext、moveprevious、movefirst和movelast方法
3.4.3 检查bof和eof
3.4.4 添加记录定位——循序渐进
3.5 移动工程
3.5.1 app对象
3.5.2 打开recordset
3.5.3 使工程实例便于移植
3.6 在网格中显示数据
3.6.1 datagrid控件——循序渐进
3.6.2 显示记录号和记录总数
3.6.3 movecomplete事件
3.6.4 完成网格
3.7 data environment designer
3.7.1 connection和command对象
3.7.2 添加data environment designer
3.7.3 添加connections
3.7.4 添加命令
3.7.5 创建data environment——循序渐进
3.7.6 使command基于access查询
3.7.7 dataenvironment对象的记录定位
3.7.8 使data environment便于移植
3.7.9 编写recordset事件的代码
3.8 数据的层次
3.8.1 关系层次
3.8.2 在mshflexgrid控件中显示层次数据
3.9 data view窗口
3.10 data report designer
3.10.1 创建报表——循序渐进
3.10.2 从窗体打印报表——循序渐进
3.10.3 设置数字型字段的格式
3.10.4 向报表中添加总计
3.10.5 自动创建报表
3.10.6 设置报表的页边距
3.10.7 报表的分组
3.10.8 开始一个新的数据工程
第4章 维护数据库文件
4.1 ado游标
4.1.1 设置游标属性
4.1.2 cursorlocation属性
4.1.3 cursortype属性
4.1.4 locktype属性
4.1.5 mode属性
4.2 更新recordset
4.2.1 修改记录
4.2.2 添加记录
4.2.3 删除记录
4.3 防止错误
4.3.1 锁定文本框
4.3.2 限制用户输入的字段长度
4.3.3 使用validate事件验证数据
4.3.4 保护add操作
4.3.5 willchangerecord事件
4.3.6 捕获数据库错误
4.4 搜索特定记录
4.4.1 使用find方法
4.4.2 未找到记录
4.4.3 bookmark
4.5 使用数据库字段
4.5.1 引用数据库字估
4.5.2 使用非绑定型控件
4.5.3 将数据库字段加载到列表框
4.6 对数据进行排序和筛选
4.6.1 sort属性
4.6.2 filter属性
4.7 使用sql
4.7.1 基于sql使用command对象
4.7.2 sql查询
4.7.3 使用query builder创建sql语句
4.7.4 创建sql查询——循序渐进
4.7.5 多个表
第5章 使用ado编程对象模型
5.1 ado层次
5.1.1 ado对象
5.1.2 ado事件
5.1.3 创建ado对象
5.1.4 打开connection
5.1.5 打开recordset
5.1.6 使用recordset
5.1.7 事务
5.2 sql
5.2.1 sql语句的类型
5.2.2 编写sql select语句
5.2.3 打开基于sql的recordset
5.2.4 通过执行命令打开recordset
5.2.5 使用connection、command和recordset的例子
5.2.6 执行sql动作查询
5.2.7 创建表或索引
5.3 数据窗体向导
5.4 层次式recordset
第6章 创建类模块
6.1 visual basic和面向对象编程
6.1.1 对象
6.1.2 面向对象的术语
6.1.3 可重用的对象
6.2 类
6.2.1 类的属性
6.2.2 指派属性值
6.3 创建新类——循序渐进
6.3.1 定义新的类模块
6.4 基于类创建新的对象
6.5 选择创建新对象的时机
6.5.1 使用set语句
6.5.2 使用new关键字
6.5.3 早期绑定和后期绑定
6.5.4 初始化和终止事件
6.6 事件
6.6.1 产生事件
6.6.2 响应事件
6.6.3 向本章的循序渐进教程中添加一个事件
6.7 集合
6.7.1 创建集合
6.7.2 在cdispensaryitem类中创建惟一的键码
6.7.3 创建cdispensaryitems类
6.7.4 向集合中添加对象
6.7.5 从集合中删除一个成员
6.7.6 访问集合中的成员
6.7.7 返回count属性
6.7.8 设置默认属性
6.7.9 使用for each…next
6.7.10 在窗体中使用集合——循序渐进
6.8 错误
6.8.1 为错误处理设置环境选项
6.8.2 设置错误号码、说明和常数
6.8.3 使用enum声明常数
6.8.4 错误的产生和处理——循序渐进
6.9 使用object browser
6.9.1 检查vb对象
6.9.2 检查自己的类
第7章 设计多层数据库应用程序
7.1 设计系统
7.1.1 概念设计、逻辑设计、物理设计以及部署
7.1.2 性能、可维护性、可扩展性和可用性
7.1.3 分层设计应用程序
7.1.4 设计工具
7.1.5 分层设计advanced vision应用程序
7.2 创建感知数据的类
7.2.1 建立类模块
7.2.2 划分窗体和类的功能
7.2.3 将窗体中的控件与数据绑定
7.2.4 验证数据
7.2.5 整个工程
7.3 为多层应用程序编码
7.3.1 多层应用程序的组织
7.3.2 data services
7.3.3 business services
7.3.4 验证和格式化输入数据
7.3.5 user services
第8章 activex代码组件的创建和管理
8.1 组件对象模型
8.1.1 activex代码组件
8.1.2 instancing属性
8.1.3 类型库
8.1.4 测试组件
8.1.5 注册和解除注册组件
8.1.6 friend
8.2 创建active dll
8.2.1 创建active dll——循序渐进
8.2.2 创建客户应用程序
8.2.3 在服务器组件中产生事件
8.2.4 创建组件的dll文件和类型库
8.2.5 创建能实现事务规则的组件
8.3 组件的生命期
8.4 activex exe代码组件
8.4.1 创建activex exe——循序渐进
8.4.2 异步通信
8.5 接口
8.5.1 接口类
8.5.2 implements关键字
8.5.3 使用类实现接口
8.5.4 通过接口实现多态性
8.5.5 维护接口的完整性
8.5.6 版本兼容性
8.6 可视化组件管理器
8.6.1 发布组件
8.6.2 利用visual component manager查换和重用组件
第9章 activex文档和activex控件
9.1 activex文档
9.1.1 userdocument事件
9.1.2 hyperlink对象
9.1.3 菜单
9.1.4 userdocument文件
9.1.5 创建activex文档——循序渐进
9.1.6 使用propertybag对象保持数据
9.1.7 使用propertybag保持属性——循序渐进
9.1.8 在文档之间共享数据
9.1.9 使用migration wizard
9.2 activex控件
9.2.1 控件作者与开发者
9.2.2 创建新控件
9.2.3 显露控件的属性
9.2.4 委派属性
9.2.5 使用propertybag保持属性
9.2.6 使用ambient对象的属性
9.2.7 extender对象和属性
9.2.8 响应resize事件
9.2.9 产生事件
9.2.10 创建和使用activex控件——循序渐进
9.2.11 测试控件
9.2.12 创建属性页
9.2.13 检查和修改property page
9.2.14 感知数据的控件
9.2.15 编译和发布控件
第10章 internet编辑
10.1 internet控件
10.1.1 从visual basic工程浏览web
10.2 动态html
10.2.1 查看动态web页
10.2.2 创建dhtml应用程序
10.2.3 创建dhtml磁——循序渐进
10.2.4 开发与部署
10.2.5 连接到第二页
10.2.6 动态的样式和内容
10.2.7 dhtml对象模型
10.2.8 状态管理
10.2.9 保存并取因cookie
10.3 internet信息服务器
10.3.1 iis应用程序的结构
10.3.2 webclass
10.3.3 webitem与模板
10.3.4 活动服务器页
10.3.5 超链接
10.3.6 webclass事件
10.3.7 创建iis应用程序——循序渐进
10.3.8 urlfor方法
10.3.9 substitution标记
10.3.10 利用nextitem属性来控制次序
10.3.11 状态管理
10.3.12 请求用户输入
第11章 使用widnows api扩展vb功能
11.1 动态链接库
11.1.1 declare语句
11.1.2 传递参数值的两种方式:byval和byref
11.1.3 调用dll过程
11.1.4 获得dll的参考信息
11.2 api查看器
11.2.1 运行查看器
11.2.2 库文件
11.3 调用dll过程
11.3.1 通过dll访问系统信息
11.3.2 利用sendmessage与窗体和控件通信
11.3.3 利用sendmessage函灵敏自动下拉列表
11.3.4 退出windows
第12章 应用程序的优化
12.1 设置编译器选项
12.1.1 伪代码与纯代码
12.1.2 高级优化
12.2 条件编译
12.2.1 #if指令
12.2.2 指定应用程序的参数
12.3 在windows注册表中存储数据
12.3.1 保存设置
12.3.2 取回设置
12.3.3 删除设置
12.4 资源文件
12.4.1 resource editor
12.4.2 添加资源文件
12.4.3 编辑资源文件
12.4.4 在运行时加载资源文件
第13章 创建帮助文件
13.1 html help workshop
13.2 建立帮助
13.2.1 help程序
13.2.2 上下文相关帮助
13.2.3 whatsthishelp
13.3 文件类型
13.3.1 创建文件
13.3.2 创建帮助程序以及上下文件相关帮助——循序渐进
13.4 将html help文件连续到应用程序中
13.4.1 连接上下文相关帮助
13.4.2 修改帮助文件
13.5 whatsthishelp
13.5.1 创建主题文件
13.6 其他形式的用户帮助
第14章 发布应用程序及其组件
14.1 package and deployment wizard
14.1.1 打包应用程序
14.1.2 可发布的文件
14.1.3 部署
14.1.4 打包带有activex组件的应用程序
14.1.5 管理脚本
14.1.6 测试安装程序
14.1.7 卸载应用程序
14.2 手工创建安装文件
14.2.1 setupl.exe
14.2.2 setup.lst
14.2.3 手工发布
14.3 部署控件并颁发许可
14.4 visual studio installer
附录a 创建winhelp文件
附录b 顺序和随机数据文件
附录c 回顾介绍性的vb主题
附录d 各章思考题答案
词汇表
· · · · · · (收起)
读后感
用户评价
这本书的排版和插图质量,说实话,与我最近读到的几本前端和Python的书籍相比,明显处于不同的年代水平。字体选择和行距的处理,虽然清晰可辨,但缺乏现代技术书籍那种赏心悦目的设计感。不过,技术书籍的核心价值在于内容,外观上的不足可以勉强接受。我重点翻阅了关于ActiveX控件自定义开发的章节,这部分内容是VB6程序员能力的重要体现。很多书籍往往只停留在如何引用和使用别人做好的控件,但真正的高手需要自己“造轮子”。这本书对控件生命周期、消息泵处理以及如何在VB环境中封装复杂的COM接口进行了深入的剖析,这部分内容无疑是干货。它没有回避VB6在处理复杂图形渲染和底层硬件交互时的限制,而是直接提供了绕过这些限制的方法论。这种直面技术痛点,而不是粉饰太平的态度,让我对作者的专业性更加信服。如果作者能提供一些配套的源代码示例,特别是针对那些涉及API调用的部分,那将极大地提高学习效率,毕竟这些复杂的调用光靠阅读文字描述很难一次性理解到位。
这本书的封面设计得相当有年代感,那种熟悉的Windows 98/2000时代的界面元素一上来就让人仿佛穿越回了那个VB6还是主流的黄金年代。拿到手沉甸甸的,感觉内容肯定很扎实。我原本以为市面上关于VB6的书籍大多停留在基础语法和简单的界面设计层面,毕竟这门技术已经有很长一段时间没有更新迭代了。但是这本书的厚度,特别是副标题“高级编程”,让我对它抱有极高的期待。我希望它能深入讲解一些在日常开发中经常遇到的性能瓶颈、内存管理,以及如何利用API调用来扩展VB6的功能边界。特别是关于COM组件的深度集成和错误处理机制的优化,这些都是决定一个VB6项目能否长期稳定运行的关键所在。如果它能提供一些关于如何将老旧的VB6代码现代化改造的思路,哪怕只是理论层面的探讨,那也会非常有价值。毕竟,很多企业核心系统仍然赖以VB6运行,如何让这些“古董”系统焕发新生,是摆在所有维护者面前的难题。我尤其关注书中是否有关于多线程处理的讨论,虽然VB6天生缺乏原生多线程支持,但成熟的解决方案和Workaround总是存在的,期待能从书中学到一些高明的“障眼法”。
读完前几章的目录,我心里咯噔了一下,感觉这书的侧重点似乎与我预想的“性能调优大师”路线有些偏离。它似乎更偏向于系统级的应用架构构建,而非微观的代码级优化。例如,它花了大量的篇幅去讨论如何设计一个健壮的数据库访问层,使用了哪些设计模式来解耦业务逻辑和数据操作,这对于一个想要快速上手解决现有问题的开发者来说,可能显得有些“高屋建瓴”了。我更希望看到的是,如何用最少的代码量实现最高的效率,而不是一个完美的、教科书式的架构蓝图。不过,换个角度想,对于那些需要编写大型、可维护性强的企业级应用的老手来说,这种系统的、面向工程化的讲解或许正是他们需要的。它强调的不是一招鲜吃遍天的小技巧,而是构建一个可持续迭代的软件工程体系。例如,书中对错误日志记录和远程调试工具的介绍就非常详尽,这些都是项目进入维护期后,最能体现开发者功底的地方。如果能结合一些具体的、复杂的业务场景案例来阐述这些架构思想,那就更好了,单纯的理论堆砌总是让人感觉有些空泛。
这本书给我的整体感受是,它更像是一本“武功秘籍”,而非“入门教程”。它假设读者已经对VB6的基本语法和IDE操作了如指掌,上来就直奔那些决定应用成败的关键技术点。对于一个编程新手来说,这本书的门槛可能会非常高,甚至会产生挫败感。但对于那些已经用VB6写过多年项目,但总感觉代码质量不够稳定、性能总有瓶颈的资深工程师而言,它提供了一种系统性的、提升专业深度的路径图。它不仅仅告诉你“怎么做”,更深层次地解释了“为什么非得这么做”。例如,对于变量生命周期和对象引用的处理,书中的解释远比官方文档来得生动和实用。它教会你如何像一个“老法师”一样去驾驭VB6这门略显老迈但依然强大的工具。总而言之,这是一本需要带着实践经验去研读的书籍,读完后,你会感觉自己对VB6的理解进入了一个全新的维度,从一个熟练的“使用者”蜕变成了一个能够洞悉其底层机制的“架构师”。
我试着按照书中的某个高级数据结构实现章节进行了一次小小的代码复现。说实话,这过程简直就是一场“考古”。VB6的限制在实践中暴露无遗,许多现代语言中一行代码就能解决的问题,在VB6中需要七拐八弯地调用各种系统函数,手动管理内存指针,稍有不慎就会导致程序崩溃或内存泄漏。这本书的价值就在于,它详细记录了这些“弯路”和“陷阱”,并给出了经过验证的、能够稳定运行的解决方案。特别是它关于如何利用Late Binding和Early Binding的混合使用策略来平衡性能和开发灵活性的讨论,非常具有实战意义。这反映出作者对VB6这门语言的理解已经达到了炉火纯青的地步,深知如何在性能和便利性之间走钢丝。然而,我也发现,书中对一些现代化的第三方库和工具的提及相对较少,这可以理解,毕竟这是一本针对VB6的“专著”。但如果能增加一个附录,推荐一些至今仍在维护的、可以与VB6互操作的现代化组件,那对于我们这些仍需维护遗留系统的开发者来说,无疑是雪中送炭的宝贵信息。