论文部分内容阅读
摘要:实现了基于VFP的非OLE方式多媒体数据快速处理,提出了一种简化数据库管理,节省了大量存储空间,且编程简单,快速的多媒体信息处理技术。
关键词:VFP;OLE;多媒体数据快速处理
中图分类号:TP391.41文献标识码:A文章编号:1009-3044(2008)25-1545-02
Fast Disposal Technology of Datas in Media Based on VFP
WANG Shuo1, WU Hui2
(1. Hebei Transportation College, Shijiazhuang 050091, China; 2. Shijiazhuang Information Engineering Vocational College, Shijiazhuang 050091, China)
Abstract: The paper introduced the technology of not using OLE in Visual FoxPro(VFP) to realize the fast disposal of multimedia data. It not only predigested the database management, saved the space for multimedia information. But the technology is very easy to be programmed and realized.
Key words: VFP; OLE; Fast Data Disposal Technology In Multimedia
1 VFP与OLE技术
Visual FoxPro(以下简称VFP)是一种高级数据库应用程序开发系统,可利用OLE技术实现对象的链接与嵌入。为此 VFP在定义数据库(表)的过程中,提供了General字段,用以将各种媒体对象放入数据库中。并可用APPEND、MODIFY命令或系统菜单对数据库中的各种媒体对象进行输入、输出和编辑等操作。虽然VFP提供的OLE编程方式简单快捷,但在实际运行VFP程序的过程中,发现使用OLE方式处理多媒体数据运行效果并不理想,其原因在于:
1.1 重复占用磁盘空间
在进行多媒体数据入库操作后,发现备注文件(.FPT)的生成长度略大于原文件(.BMP、.WAV、.AVI)长度,且有些操作不能删除原文件,造成重复占用磁盘使用空间。
1.2 运行速度慢
在VFP中利用OLE方法处理多媒体数据,访问磁盘的次数明显增加。由于频繁地读取磁盘数据,使得用户操作有明显的等待时间。
2 VFP中多媒体程序的设计与实现
为简化多媒体数据的管理,提高多媒体信息的输出速度,笔者对VFP中多媒体信息处功能、外部应用程序接口、Windows 的多媒体动态链接库进行了充分的研究,终于找到一种简单有效的实现方法。
首先建立一多媒体数据库PLAY. DBF, 设有三个字符型字段:BMPFILE、WAVFILE、AVIFILE,分别用于存放图片文件名(.BMP )、声音文件名(.WAV)和视频文件名(.AVI)。
2.1 实现数字视频文件的快速播放
虽然VFP处理视频文件的功能较弱,但作为VFP运行基础的Windows系统却提供了上百个具有多媒体处理能力的API函数,并统一由多媒体动态链接库提供给开发者使用。多媒体动态链接库所在目录及库名,在不同的系统中略有不同,在Windows 3.2和Windows 95中,为\WINDOWS\SYSTEM\MMSYSTEM.DLL,在Windows NT中,则为\WINDOWS\SYSTEM32\WINMM.DLL。
在VFP中,为调用多媒体动态链接库中的API函数,提供了一个外部应用程序接口库文件FOXTOOLS. FLL。其中有两个重要的函数:REGFN()和CALLFN()。前者用来寄存驻留在WINDOWS的动态链接库中的API函数及其参数。后者则用以调用执行 Windows 的 API 函数。调用格式:REGFN("函数名","传给函数的参数类型、数量","函数返回值的数据类型","DLL库名")
返回参数:调用成功REGFN()返回一个数值,否则返回-1。
CALLFN ((REGFN()的返回值,参数1,参数2...)
注意:
(1)在CALLFN()中说明的参数数目、类型必须与在REGFN()中指定的参数相符,否则调用失败。
(2)在VFP5.0中,针对32位系统提供了调用REGFN32()。
(3)对regfn()和callfn() 中双引号内的字符串应注意大小写的混合写法,否则可能会引起执行错误。
例:本例仅给出视频操作部分的程序代码,省略了其它相关部分的程序代码。
(1)FORM.INIT事件中的程序代码:
set library to HOME() foxtools.fll ADDITIVE
public playfavi
playfavi=regfn("MCISendString","CCII","I","MMSYSTEM")
(2)OPEN.CLICK(打开视频文件操作)程序代码:
avifname=play.avifile
callfn(playfavi,"Open
关键词:VFP;OLE;多媒体数据快速处理
中图分类号:TP391.41文献标识码:A文章编号:1009-3044(2008)25-1545-02
Fast Disposal Technology of Datas in Media Based on VFP
WANG Shuo1, WU Hui2
(1. Hebei Transportation College, Shijiazhuang 050091, China; 2. Shijiazhuang Information Engineering Vocational College, Shijiazhuang 050091, China)
Abstract: The paper introduced the technology of not using OLE in Visual FoxPro(VFP) to realize the fast disposal of multimedia data. It not only predigested the database management, saved the space for multimedia information. But the technology is very easy to be programmed and realized.
Key words: VFP; OLE; Fast Data Disposal Technology In Multimedia
1 VFP与OLE技术
Visual FoxPro(以下简称VFP)是一种高级数据库应用程序开发系统,可利用OLE技术实现对象的链接与嵌入。为此 VFP在定义数据库(表)的过程中,提供了General字段,用以将各种媒体对象放入数据库中。并可用APPEND、MODIFY命令或系统菜单对数据库中的各种媒体对象进行输入、输出和编辑等操作。虽然VFP提供的OLE编程方式简单快捷,但在实际运行VFP程序的过程中,发现使用OLE方式处理多媒体数据运行效果并不理想,其原因在于:
1.1 重复占用磁盘空间
在进行多媒体数据入库操作后,发现备注文件(.FPT)的生成长度略大于原文件(.BMP、.WAV、.AVI)长度,且有些操作不能删除原文件,造成重复占用磁盘使用空间。
1.2 运行速度慢
在VFP中利用OLE方法处理多媒体数据,访问磁盘的次数明显增加。由于频繁地读取磁盘数据,使得用户操作有明显的等待时间。
2 VFP中多媒体程序的设计与实现
为简化多媒体数据的管理,提高多媒体信息的输出速度,笔者对VFP中多媒体信息处功能、外部应用程序接口、Windows 的多媒体动态链接库进行了充分的研究,终于找到一种简单有效的实现方法。
首先建立一多媒体数据库PLAY. DBF, 设有三个字符型字段:BMPFILE、WAVFILE、AVIFILE,分别用于存放图片文件名(.BMP )、声音文件名(.WAV)和视频文件名(.AVI)。
2.1 实现数字视频文件的快速播放
虽然VFP处理视频文件的功能较弱,但作为VFP运行基础的Windows系统却提供了上百个具有多媒体处理能力的API函数,并统一由多媒体动态链接库提供给开发者使用。多媒体动态链接库所在目录及库名,在不同的系统中略有不同,在Windows 3.2和Windows 95中,为\WINDOWS\SYSTEM\MMSYSTEM.DLL,在Windows NT中,则为\WINDOWS\SYSTEM32\WINMM.DLL。
在VFP中,为调用多媒体动态链接库中的API函数,提供了一个外部应用程序接口库文件FOXTOOLS. FLL。其中有两个重要的函数:REGFN()和CALLFN()。前者用来寄存驻留在WINDOWS的动态链接库中的API函数及其参数。后者则用以调用执行 Windows 的 API 函数。调用格式:REGFN("函数名","传给函数的参数类型、数量","函数返回值的数据类型","DLL库名")
返回参数:调用成功REGFN()返回一个数值,否则返回-1。
CALLFN ((REGFN()的返回值,参数1,参数2...)
注意:
(1)在CALLFN()中说明的参数数目、类型必须与在REGFN()中指定的参数相符,否则调用失败。
(2)在VFP5.0中,针对32位系统提供了调用REGFN32()。
(3)对regfn()和callfn() 中双引号内的字符串应注意大小写的混合写法,否则可能会引起执行错误。
例:本例仅给出视频操作部分的程序代码,省略了其它相关部分的程序代码。
(1)FORM.INIT事件中的程序代码:
set library to HOME() foxtools.fll ADDITIVE
public playfavi
playfavi=regfn("MCISendString","CCII","I","MMSYSTEM")
(2)OPEN.CLICK(打开视频文件操作)程序代码:
avifname=play.avifile
callfn(playfavi,"Open