2024年4月4日发(作者:)

LAYER

在DELPHI中我们可以用MEDIAPLAYER来管理媒体控件界面外部设备,如声卡,MIDI

乐器,CD-ROM驱动器等.

MEDIAPLAYER组件位于SYSTEM选项卡上.它是一组按钮的组合,其上有播放

(PLAY),暂停(PAUSE),停止(STOP),下一标记(NEXT),上一标记(PREVIOUS),快进(STEP),快退

(BACK),录制(STARTRECODING)与弹出(EJECT)等9个按钮.

其主要属性有:

DEVICETYPE属性:用来指定或改变被MEDIAPLAYER组件控制的设备类型,选

DTAUTOSELECT最合适为自动测试.

DISPLAY:用来指定一个窗口控制来显示播放时的视屏输出.一般为PANEL元件,

若缺省则自动打开一个窗体显示.

FILENAME:用来指定或改变即将播放或录制的媒体文件名.

LENGTH:指定在打开的多媒体设备中的媒体长度.

STARTPOS:指定播放起始点.

ENDPOS:指定播放中止点.

AUTOOPEN:是否自动打开在DEVICETYPE属性中指定的多媒体设备.

主要方法有:

BACK:调用该方法将使当前正在播放的媒体回退一定数量的帧.回退的帧数决定

于FRAMES属性的值.

CLOSE:用于关闭打开的多媒体设备.

EJECT:用于弹出打开的多媒体设备中国的媒体.

NEXT:用于移动当前位置到下一帧的开始处.

OPEN:用于打开一个多媒体设备,在调用该方法之前必须在DEVICETYPE属性

中指明所用的多媒体设备.

PLAY:用于播放已经载入打开的多媒体设备中媒体.

PAUSE:设置暂停或播放状态.

PREVIOUS:前进到,前一帧开始处.

REWIND:回到文件首部.

STEP:前进一定数据量的帧

STOP:停止播放.

例:制作超级播放器(WVD)

首先在SYSTEM选项卡上选择MEDIPLAYER在窗体上画出来.

设置属性.

设置MEDIPLAER的FILENAME属性指向某一个具体文件路径.例如:

设置DEVICETYPE为DTAUTOSELECT

设置AUTOOPEN为TRUE

也可以在窗体画出一个PANEL如图.

设置MEDIAPLAER的DISPLAY为PANEL1

2.实现”全屏播放”与”窗口播放”

改form1的BorderStyle属性值为:bsnone;

1Click(Sender:TObject);

begin

e:=false;

:=0;

:=0;

:=;

:=;

:=;

:=;

:=;

:=;

yRect:=rect(0,0,,);

end;

ick(Sender:TObject);

begin

close;

end;

如要实现窗口可直接实现:

yRect:=rect(0,0,,);

如要实现窗口与全屏之间转换可直接定义PANEL1的宽度与高度,及边界。

3.弹出与关闭CD-ROM驱动器.

在使用之前必须先在引用单元文件,即系统调用处调用MMSYSTEM.

在USES

WINDOWS,MESSGAE,MMSYSTEM,SYSUTILS,……

然后加入代码.

procedureTForm1.N2Click(Sender:TObject);

begin

mcisendstring('setcdaudiodooropen',nil,0,handle);

end;

procedureTForm1.N3Click(Sender:TObject);

begin

mcisendstring('setcdaudiodoorclosed',nil,0,handle);

end;

4.声道控制

与3相同也必须加入MMSYSTEM

立体声事件中加入

mcisendstring(‘setallaudioallon’,nil,0,handle);

左声道控制加入

mcisendstring(‘setallaudioalloff’,nil,0,handle);

mcisendstring(‘setallaudiolefton’,nil,0,handle);

右声道控制加入

mcisendstring(‘setallaudioalloff’,nil,0,handle);

mcisendstring(‘setallaudiorighton’,nil,0,handle);

5.例.利用TRACKBAR1来测试多媒体长度,并控制快进及后退。

在界面上画有时间控件及TRACKBAR1控件(在WIN32选项卡上)。

设置TIMER的时间间隔为100

代码:

layer1Click(Sender:TObject;Button:TMPBtnType;

varDoDefault:Boolean);

begin

:=;

ncy:=10;

yRect:=rect(0,0,,);

end;

1Timer(Sender:TObject);

begin

on:=on;

end;

ar1Change(Sender:TObject);

begin

on:=on;

;

end;