FVision起源
FVision是我在大学时候利用两年时间搭建的一个DOS下的应用程序框架,当时的目的是基于这个框架构建我们的游戏开发平台/单片机集成开发平台以及其他大型系统,最成功的应用有:Z80集成开发环境(包括编辑器/编译器/机器码生成/单板机仿真器)、一个DBF数据库系统、超文本编辑器、蓝蚂蚁RPG游戏开发平台1.0版本等。。。
现在DOS环境已经过时,因此这个类库已经失去其作用,但可以作为应用程序框架开发的一个借鉴,此处将所有源代码公开。
FVision介绍
面向对象的程序设计方法是一种很好的程序设计方法,特别是用面向对象方法设计的应用程序框架,可以使应用程序的设计更加容易。这种框架的例子有DOS下的Turbo Vision,WINDOWS下的OWL、MFC等。下面介绍的是另一种DOS下的图形界面应用程序框架,我把它取名为FVision,它的主要功能和优点如下:
1、完全基于对象编程和事件驱动的机理,提供了一个比较完善和合理的类层次结构和继承关系。
2、对于窗口的处理和窗口、控件的管理较全面,窗口的管理采用Z次序,不过对于屏幕的保存有一些缺陷。
3、提供了XMS等的内存管理功能,可以使应用程序不受640K常规内存的限制,许多暂时不用的数据(例如保存的背景)都可以自动切换到扩展内存。
4、支持许多外设的操作,例如鼠标、串口、VESA显示卡、DAC、各种打印机、CD播放、声卡DSP和声卡FM乐器支持,且对这些外设都做了比较好的封装,使调用非常方便。
5、对于汉字的快速显示、整字识别有较好的支持,特别是提供了汉字的几种输入法,例如拼音输入、区位输入和扩展输入法的方法。
6、具有功能较强的文字编辑对象,可以处理超过三万行的大型文件的编辑,并可以通过简单的重载一个虚函数来实现关键字的特殊显示,从而设计某种语言的集成编程环境,编辑器对象可以很方便的添加到一个窗口里面。
7、支持多种图形文件的操作,例如PCX、BMP、ICO、FLC等,以及一些图形处理方法,例如灰度变换、减少颜色数等。
8、支持数据库(DBF格式)操作,可以进行数据库的查询、排序等基本操作。
9、提供了一些算法方面的支持,例如CRC-16、哈西表等。
10、提供了非常多的控件和公共对话框,例如文件对话框、计算器、CD播放器等。
11、提供了内存驻留程序的一段通用代码。
12、截获了关键错误中断(INT24),可以在遇到关键错误(例如访问软驱失败)时候避免程序退出,而是直接在状态行中显示出捕获到的关键错误,并进行交互。
13、部分支持流(Stream)、群(Collection)、资源文件(ResourceFile)。
14、提供了串行通信的基本支持,提供类似超级终端的应用程序,并提供了一种自定义文件传输协议。
15、提供了一个内存驻留的抓图程序,可以通过鼠标和键盘等多种事件激活,支持多种图形模式。
16、提供了一个内存驻留的英汉词典软件,采用图形方式,可以将文本屏幕的内容切换到图形模式从而显示汉字,并支持整屏翻译。
下面帖出来的是这个类库的主要源代码和几个应用实例:
下载源代码包(240K)(部分)
编辑器可执行程序
数据库系统可执行程序
综合演示程序
串行通信演示程序
汉字库
(注:以上可执行文件都要依赖于汉字库,因此汉字库文件必须和可执行程序放在同一个目录下)
源代码目录结构为:
RTL 类库源代码
GRA 综合应用的一个例子
PICT 图形处理应用的例子(必须运行于纯DOS模式下)
TMCS 文本编辑器和串行通信应用的例子
DBS 数据库应用的例子
注:编程语言为Borland Pascal 7.0,少数地方使用汇编和嵌入的数据,这些程序不能在WIN98下面运行(可能因为BGI驱动程序的原因)。
RTL目录下面主要文件列表如下:
1.内核:
FObject.Pas | 基对象单元,包括所有FVision类的基类TObject,与Turbo Vision相同 |
FEvent.Pas | 事件处理支持单元 |
FMouse.Pas | 鼠标支持单元 |
FTool.Pas | 工具单元,提供文件,类型转换,字符串操作等的函数 |
FGraph.Pas | 图形支持单元 |
FVESA.Pas | VESA显示模式支持单元 |
FDAC.Pas | DAC寄存器支持单元,可以实现淡入,淡出等效果 |
FWrite.Pas | 文字显示单元,包括汉字的各种显示方式,直接写屏,整字识别等 |
FXmsDrv.Pas | XMS支持单元,包括各种对扩展内存的操作 |
PrnFltr.Pas | 打印机支持单元,提供EPSON系列,HP系列,PostScript等的支持 |
FView.Pas | 基本视图对象单元,包括视类,组类,窗口类,按钮类,滚卷条类,图形类,时间类等 |
FMenu.Pas | 菜单支持单元,包括下拉菜单,弹出菜单和状态行对象 |
FCInput.Pas | 输入法单元,包括英文,全拼,区位输入法 |
FControl.Pas | 几种通用控件单元,包括广播按钮,复选框,静态文本,组按钮,图像列表类等 |
FDialog.Pas | 通用对话框单元,包括驱动器选择对话框,打开文件对话框,以及通用输入行类等 |
FExtDrv.Pas | 附加对象单元,包括实时钟,数码管,进展条,安装进程,口令输入,选择颜色,选择DAC,图表窗口等控件 |
FList.Pas | 列表对象单元 |
FApp.Pas | 应用程序类单元 |
FEdit.Pas | 文本编辑器单元,支持超过三万行的大型文本文件的编辑 |
DACDlg.Pas | 调色板设置单元,用于设置DAC寄存器 |
FGpf.Pas | 图像组支持单元 |
VESA.ASM | VESA支持的汇编模块 |
XMS.ASM | XMS支持的汇编模块 |
2.扩展:
数据库支持 | |
FBase.Pas | 数据库单元,支持DBF格式数据库的各种操作 |
串行通信支持 | |
FCommu.Pas | 串行通信支持单元 |
CommDlg.Pas | 串行通信单元,包括设置串口和超级终端类 |
图像支持 | |
FBmp.Pas | BMP图形文件支持单元 |
FPcx.Pas | PCX图形文件支持单元 |
FPic.Pas | PIC图形文件支持单元 |
FIcon.Pas | 图标文件支持单元 |
FLics.Pas | 3DS动画文件支持单元 |
FPhoto.Pas | 缓冲式图像类单元,使用扩展内存来存储图像 |
FPicture.Pas | 通用图像文件单元,支持PCX,BMP,ICO,GIF,FLC等图像格式和动画 |
FConCol.Pas | 几个图像处理方法单元,主要包括用于缩减图像颜色以及平滑处理的算法 |
ModeX.Pas | VGA ModeX显示模式支持单元,提供非标准的ModeX模式的支持 |
FCutGra.Pas | 抓图文件支持单元 |
声音支持 | |
FDsp.Pas | 数字信号处理单元,提供声卡的数字信号处理芯片的支持 |
FSbFM.Pas | FM乐器支持单元,可以控制各个乐器通道的各种参数 |
SbVol.Pas | 声卡音量设置单元 |
FMidi.Pas | MIDI文件支持单元 |
FCDDrv.Pas | CD播放器支持单元 |
FCDPlay.Pas | CD播放器单元 |
CRC校验 | |
FCRC.Pas | CRC16支持单元 |
数据结构 | |
FHash.Pas | 哈希表支持单元 |
内存驻留程序 | |
TSRU.Pas | 内存驻留程序支持单元 |
其他 | |
FDict.Pas | 英汉辞典单元,使用UCDOS5.0的词库 |
FMime.Pas | 挖地雷游戏 |
FBlock.Pas | 俄罗斯方块游戏 |
FCalc.Pas | 计算器单元 |
FCalenda.Pas | 日历单元 |
类库的层次结构和继承关系如下(只包含了基本部分):
下面是应用程序TMCS(嵌入式系统集成开发环境)的界面: