e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 数据库 >> FoxPro教程 >> VFP应用程序多媒体徽标的实现 >> 教程正文
 
教程搜索
 
 
相关教程
  • 二级FoxBASE上机考试技巧
  • VFP中状态栏控件的使用说明
  • Visual FoxPro 9.0更强大了
  • VFP智能感应的二次开发
  • VFP中多条件数据查询程序的实现
  • VFP应用程序多媒体徽标的实现
  • VFP 6.0网络编程应注意的问题
  • VFP程序的五点经验
  • Visual Foxpro通用报表打印程序
  • 在ASP.NET中使用Visual FoxPro7.0
  • 修复DBF数据表文件的简单方法
  • 在VisualFoxPro5.0中激活InternetExpl
  • 在VFP中制做异型窗口
  • Visual FoxPro 9 集成开发环境新特性
  • Visual FoxPro 9.0 的报表设计器
  • Visual FoxPro 9中新的数据处理方式
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
VFP应用程序多媒体徽标的实现
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9

摘 要:介绍了利用WindowsAPI函数mciSendString()和VFP外部应用程序接口库文件foxtools.fll,在VFP应用程序中实现多媒体厂商徽标的处理方法。

关键词:VFP;应用程序;多媒体;表单

一、引言

类似于某些电视台放置在屏幕左上角的动画台标,越来越多的应用软件在屏幕的某个位置放置动态的厂商标记图案或系统徽标,为应用程序增色不少。由于VFP不支持GIF动画文件,要实现这种效果就比较困难。一种方法是在屏幕上放置多张图片,利用Timer控件交替显示这些图片。这种方法在交互式处理时用户会有迟滞感,显示效果也难以令人满意。另一种方法是以OLE方式处理多媒体徽标,简单快捷,但存在运行速度较慢、重复占用磁盘空间和软件不易维护等问题。比较好的处理方法是先用Cool3D方便快速地制作一个视频剪辑AVI多媒体徽标文件,然后利用WindowsAPI函数mciSendString()以及foxtools.fll库函数,实现VFP应用程序多媒体徽标的高效处理。

二、基本处理思想

我们知道,WindowsAPI函数mciSendString()可以播放多媒体文件,SetWindowPos()函数则使我们可以在应用程序窗体上的指定位置播放媒体。光有这两个函数还不够,我们需要利用VFP为我们提供的外部应用程序接口库文件foxtools.fll。其中,_WhToHwnd() 函数返回指定WHANDLE的窗口句柄,_WonTop()则返回顶端窗口的窗口句柄。在表单中利用这两个外部过程可以获得当前表单的窗口句柄,再利用SetWindowPos()就可以在表单中适当位置播放媒体了。

MciSendString()函数的使用格式如下:

DECLARE integer mciSendString in WinMM.DLL ;

string lpszCommand,;

string @lpszReturnString,;

integer cchReturn,;

integer hwndCallback

各参数的含义:lpszCommand,播放多媒体的指令串;lpszReturnString,接收返回信息缓冲区的地址,若不需要返回信息可设置为NULL;cchReturn,缓冲区大小;hwndCallback ,返回的窗口句柄。

SetWindowPos()函数的使用格式如下:

DECLARE integer SetWindowPos in User32.DLL ;

integer hwnd,;

integer hWndInsertAfter,;

integer x,;

integer y,;

integer cx,;

integer cy,;

integer uFlags

各参数的含义:hwnd,窗口句柄;hWndInsertAfter,设置当前窗口的Zorder值;x,窗口左边坐标点;y,窗口顶部坐标点;cx,以像素表示的窗口宽度;cy,以像素表示的窗口高度。

三、具体实现方法

⒈利用Cool3D制作一个80X40左右大小的视频剪辑文件TagAVI.AVI。


⒉在VFP中新建一个表单main,在其init事件中键入如下代码:

*调用外部接口库文件

SET library to sys(5)+sys(2003)+"\foxtools.fll"

*声明WindowsAPI函数

DECLARE integer mciSendString in WinMM.DLL;

string lpszCommand,;

string @lpszReturnString,;

integer cchReturn,;

integer hwndCallback

DECLARE integer SetWindowPos in User32.DLL ;

integer hwnd,;

integer hWndInsertAfter,;

integer x,;

integer y,;

integer cx,;

integer cy,;

integer uFlags

⒊在表单main上新建PlayMedia方法,其代码为:

LPARAMETERS cMciCmd

cRetString = space(80)

nRetValue = mciSendString(cMciCmd, @cRetString, len(cRetString),0)

RETURN allt(strtran(cRetString,"",""))

⒋在表单main的Activate事件中添加如下代码:

ON error messagebox(message(),16,"出错")

*初始化处理,关闭当前媒体文件。myMedia为TagAVI.avi文件的别名。

thisform.PlayMedia("CLOSE myMedia ")

*获得当前表单窗口句柄

EXTERNAL procedure _WhToHwnd

EXTERNAL procedure _WOnTop

cur_window = _WhToHwnd(_WOnTop())

*打开媒体文件

cCmd='OPEN "TagAVI.avi" alias myMedia'+' style child parent '+ allt(str(cur_window))

thisform.PlayMedia(cCmd)

cCmd = "status myMedia window handle"

hWin =int(val(thisform.PlayMedia(cCmd)))

*在当前表单的适当位置播放媒体文件

setWindowPos(hWin,0,0,170,80,40,0)

thisform.PlayMedia("PLAY myMedia")

⒌向表单main添加一个Timer控件,设置其Interval属性值为500(可根据TagAVI.avi文件的大小进行调整),然后在其timer事件中输入下列代码:


cCmd = ("STATUS myMedia MODE")

IF thisform.PlayMedia(cCmd) = "stopped"

nLen=val(thisform.PlayMedia("STATUS myMedia length"))

nPos=val(thisform.PlayMedia("STATUS myMedia position"))

*如果已经播放到片尾,则回到片头

IF nPos>=nLen then

thisform.PlayMedia("SEEK myMedia to start ")

ENDIF

*重新播放

thisform.PlayMedia("PLAY myMedia")

ENDIF

四、结束语

上述程序在Windows98环境中,用VFP5.0调试通过。另外,在发布应用程序时,应注意将foxtools.fll文件随应用系统一起发布。实际上,我们还可以播放dat、mpg、mov等格式的多媒体文件,但需要在控制面板"多媒体"属性中确认相应的编码解码器已经安装,否则将无法播放多媒体徽标。

zmbbs=1;


  • 上一篇教程: VFP 6.0网络编程应注意的问题
  • 下一篇教程: VFP中多条件数据查询程序的实现
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.