VFP中多媒体数据的处理技巧 在VFP中，通常采用OLE技术链接与嵌入多媒体数据库，但这样运行速度很慢，为了提高多媒体信息的输出速度，我们对VFP中多媒体信息处理功能、外部应用程序接口、Windows 的多媒体动态链接库进行了充分的研究，终于找到一种简单有效的实现方法。 首先建立一多媒体数据库Medi.DBF ，设有三个字符型字段：BMPFILE、WAVFILE、AVIFILE，分别用于存放图片文件名（.BMP ）、声音文件名（.WAV）和视频文件名（.AVI）。 1.数字视频文件的快速播放
虽然VFP处理视频文件的功能较弱，但作为VFP运行基础的Windows系统却提供了上百个具有多媒体处理能力的API函数，并统一由多媒体动态链接库提供给开发者使用。在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)在VFP 5.0中，针对32位系统提供了REGFN32()函数。
(3)对REGFN()和CALLFN() 中双引号内的字符串应注意大小写的混合写法，否则可能会引起执行错误。
例：本例仅给出视频操作部分的程序代码，省略了其它相关部分的程序代码。
⑴ FORM.INIT事件中的程序代码：
set library to HOME()+foxtools.fll ADDITIVE
public playfavi
playfavi=regfn("MCISendString","CCII","I","MMSYS
TEM")
⑵ OPEN.CLICK（打开视频文件操作）程序代码：
avifname=play.avifile
=callfn(playfavi,"Open &avifname alias AVI Type AVIVideo ","",0,0)
=callfn (playfavi,"put AVI window at 160 100 320 240","",0,0)
thisform.Refresh()
说明：160,100为窗口左上角坐标，320,240为窗口大小，也可用坐标变量的方式确定视频播放窗口的位置及大小。
⑶PLAY.CLICK（播放AVI文件操作）程序代码：
=callfn(playfavi,"Play AVI","",0,0)
⑷TOP.CLICK（回到片头操作，即影片的第一帧）程序代码：
=callfn(playfavi,"Seek AVI to start","",0,0)
⑸END.CLICK（转到片尾操作，即影片的最后一帧）程序代码：
=callfn(playfavi,"Seek AVI to end","",0,0)
⑹CONFIG.CLICK（显示视频处理配置操作）程序代码：
=callfn (playfavi,"Configure avi ","",0,0)
⑺CLOSE.CLICK（关闭视频文件操作）程序代码：
=callfn(playfavi,"Close AVI","",0,0)
2.声音文件的处理
VFP处理声音文件的方式除OLE外，还可用编程方法控制播放.WAV文件，具体方法如下：
SET BELL TO Medi.WAVFILE，WAV
??CHR(7)
用此方法处理声音文件虽然快捷简单，但无法通过键盘或鼠标中断WAV文件的播放。为解决此问题，在表单中设置“停止播放”的命令按钮，其CLICK代码段为：
SET BELL TO ″声音文件名″，WAV
??CHR(7)
操作者可通过“停止播放”按钮中断声音的播放。
3.图片文件的快速处理
⑴建立表单Form，放入图形控件Image1，添加Medi.DBF至表单的数据环境，并将图形控件Image1的属性设置如下：

⑵程序清单：
ThisForm.Image1.Picture=Medi.BMPFILE
ThisForm.Refresh()
该程序在运行过程中，随着数据库指针的移动，图形控件Image1将随之实现图片的快速刷新显示。
（仁 毅）