控件本身虽然是微软作的但还是觉得有些不足,有些接口提供的不够友好,用起来要自己建立函数,有些在较低版本的MSDN中都查不到,很麻烦啊。
正文:
实现该控件的注册
在VC里没有ActiveMovieControl Object这个控件
"开始"->"运行"->"输入regsvr32 msdxm.ocx"->"确定"
会弹出一个对话框说成功的!! 注册成功,
进入VC Project->Add To Project->Components And Controls.点击打开出现的Components And Controls Gallery文件,选择其中的ActiveMovie Control Object,单击Insert
就可以在VC控件选择栏里看到该控件的图标了!
ActiveMovie控件是微软公司推出的用于多媒体程序设计的控件,它提供了非常完善的音频和视频媒体文件的回放功能,能支持多种文件格式,从最常见的WAV文件和AVI文件到使用MPEG压缩格式的VCD视频文件,都可以正常的进行播放。控件能根据文件后缀进行自动判别设备类型,并完成相应的控制。因此,若正在编写的应用程序需要提供多媒体支持,那么使用ActiveMovie控件是一个很好的主意。事实上,很多优秀的多媒体应用程序,其内部的多媒体回放就是利用ActiveMovie控件来实现。只要精心地设计应用程序的用户界面,我们一样可以开发出功能齐全、外观漂亮、具有相当水准的多媒体播放器。而且,在Windows 95/98和Windows NT的最新版本中,ActiveMovie控件已作为操作系统的一部分来提供,即使用户系统中没有安装ActiveMovie控件,Microsoft的许可协议也允许在你的应用程序的发行包中发布ActiveMovie的运行时文件。
本文将首先介绍ActiveMovie控件一些特有的属性、方法和事件,然后使用该控件开发一个具有一定功能的多媒体播放器,最后结合本例谈一谈使用ActiveMovie控件进行多媒体开发时需要注意的几个问题。
一、ActiveMovie控件特有的属性、方法和事件
ActiveMovie控件的特有属性及相关描述见表1。其它各控件常有的属性如BorderStyle、
DisplayForeColor、hWnd等,该控件也支持。
ActiveMovie控件特有的属性表 表1
属性 说明
CurrentState 指示控件的状态:stopped、paused、running
DisplayMode 显示模式,即以时间方式还是帧方式
FileName 指定该控件要操作的源文件完整名字
Rate 指示媒体流的回放率
ReadyState 指示控件状态,是否已经装入源文件
SelectionEnd 指示播放媒体流的结束位置
SelectionStart 指示播放媒体流的开始位置
CurrentPosition 指示播放媒体流的当前位置
Volume 设置音量
ActiveMovie控件常用方法有RUN、STOP、PAUSE三个,分别控制媒体流的播放、停止和暂停。使用时直接调用它们即可。其它通用方法如Drag 、Move、SetFocus等,该控件也支持。
ActiveMovie控件的特有事件及相关描述见表2。
ActiveMovie控件特有的事件表 表2
事件 说明
DisplayModeChange 当DisplayMode属性值发生变化时触发
OpenComplete 当源文件完全载入时触发
PositionChange 当媒体流的当前位置改变时触发
ReadyStateChange 当控件的ReadyState属性值改变时触发
StateChange 当播放器的状态改变时触发
Error 处理控件的出错事件
1.Active movie control object 的功能
Authorware作为强大的多媒体著作工具,支持主流的媒体格式,通过调用ActiveMovie控件还可以支持更多的媒体类型。ActiveMovie控件支持MIDI文件(*.mid、*.rmi、*.midi)、QuickTime文件(*.mov、*.qt)、Winodws Media(*.asf、*.wm、*.wma)、电影文件(MPEG)(*.mpeg、*.mpg、*.m1v、*.mpe、 *.mpv)、媒体播放列表(*.asx、*.wax、*.m3u)、视频文件(*.avi、*.wmv)、音频文件(*.wav、*.and、*.au、*.aif、*.mp2、*.mp3、*.mpa)等(在系统中所安装的Windows Media Player的版本不同,所支持的格式有所不同)。
2.Active movie control object的常用属性
"AllowChangeDisplaySize"--运行时是否允许改变显示大小。默认为TRUE。
"CurrentPosition"--当前的播放位置。默认值为-1。
"DisplayMode"--设置播放时的显示模式,可选值为"0-Time"--显示时间、"1-Frames"--显示帧。默认为"0-Time"。
"DisplaySize"--设置播放时的显示大小,可选值有"0-0-Default Size"--默认大小、"1-1-Half Size"--正常大小的一半、"2-2-Double Size"--正常大小的双倍、"3-3-FullScreen"--全屏、"4-4-Fit to Size"--适当大小、"5-5-One Sixteenth Screen"--1/16屏幕大小、"6-6-One Fourth Screen"--1/4屏幕大小、"7-7 One Half Screen"--1/2屏幕大小。默认为"0-0-Default Size"。
"EnableContextMenu"--在画面中按右键时,是否允许出现控制菜单。默认为TRUE。
"Enabled"--设置控件是否有用。默认为TRUE。
"Filename"--设置播放的文件名。
"EnableFullScreenControls"--设置是否有全屏控制。默认为FALSE。
"PlayCount"--设置播放次数。默认值为1。
"PlayState"--播放状态,其值随控件中的文件播放情况而变,可能是"0-Playback is stopped"--播放已停止、"1-Playback is paused"--播放被暂停、"2-Stream is playing"--数据流正在播放、"3-Wait for stream to begin"--等待数据流开始、"4-Stream is scanning forward"--正在向前搜索、"5- Stream is scanning in reverse"--正在向后搜索、"6-Stream has not been Opened"--还未打开。
"Rate"--设置播放时的速率,为1时是正常播放,大于1时是快进。
"ReadyState"--准备状态,其值随控件中的文件播放情况而变,可能是"0-0-Uninitialized"--未初始化、"1-1-Loading"--正在载入、"3-3-Interactive"--正在连接、"4-4-Complete"--已完成。
"SelectionEnd"--设置播放的结束位置。默认值为-1,即播放到结尾。
"SelectionStart"--设置播放的开始位置。默认值为-1,即从头播放。
"ShowControls"--是否显示控制面板。默认为TRUE。
"ShowDisplay"--是否显示显示面板。默认为FALSE。
"ShowPositionControls"--在控制面板中是否显示位置按钮。默认为TRUE。
"ShowTracker"--在控制面板中是否显示音轨栏。默认为FALSE。
"Volume"--设置音量。默认值为-320。
3.Active movie control object的常用方法
"FastForward"--快进
"FastReverse"--快退
"Next"--下一个
"Pause"--暂停
"Play"--播放
"Previous"--前一个
"Stop"--停止
4.Active movie control object的常用事件
"EndofStream"--当播放结束时产生此事件
"PlayStateChange"--当播放状态改变时产生此事件
"PositionChange"--当播放位置改变时产生此事件
ActiveMovie控件用于播放视频。常用属性表
属性:(Name)
说明:ActiveMovie控件的名称
属性:自定义
说明:打开属性页
属性:AllowChangeDisplayMode
说明:在运行中允许/不允许改变显示方式。取值为:
True
False
属性:AllowHideControls
说明:在运行中允许/不允许隐匿控制面板。取值为:
True
False
属性:AllowHideDisplay
说明:在运行中允许/不允许隐匿显示面板。取值为:
True
False
属性:Appearance
说明:是否用立体效果绘制。取值为:
0 amv(平面)
1 amv3D(立体)
属性:AutoRewind
说明:媒体播放完后是否自定重放。取值为:
True
False
属性:AutoStart
说明:在打开媒体文件后是否自定播放。取值为:
True
False
属性:Balance
说明:获得或设置多媒体立体声的平衡
属性:BorderStyle
说明:设置边界样式。取值为:
0 amvNone(无边界线)
1 amvFixedSingle(固定单线框)
属性:Causidation
说明:该控件获得焦点时,第二个控件的Validate事件是否发生。取值为:
True 发生
False 不发生
属性:DisplayBackColor
说明:显示面板背景颜色。可从弹出的调色板选择。
属性:DisplayForeColor
说明:显示面板前景颜色。可从弹出的调色板选择。
属性:DisplayMode
说明:获得或设置显示方式(时间或结构)。取值为:
0 amvTime(时间)
1 amvFrames(结构)
属性:DragIcon
说明:该对象在拖动过程中鼠标的图标
属性:DragMode
说明:该对象的拖动模式。取值为:
0 vbManual(手动)
1 vbAutomatic(自动)
属性:EnableContextMenu
说明:单击右键是否显示上下文菜单。取值为:
True
False
属性:Enabled
说明:用于设定是或对事件产生响应。取值为:
True 可用
False 不可用。在执行程序时,该对象用灰色显示,并且不响应任何事件
属性:EnablePositionControls
说明:在控制面板是否显示位置按钮。取值为:
True
False
属性:EnableSelectiontionControls
说明:在控制面板是否显示选择按钮。取值为:
True
False
属性:EnableTracker
说明:在控制面板是否显示跟踪条。取值为:
True
False
属性:FileName
说明:获得或设置当前的多媒体文件
属性:FullScreenMode
说明:是否全屏幕显示。取值为:
True
False
属性:Height
说明:ActiveMoviel控件的高度
属性:HelpContextID
说明:指定一个对象的缺省帮助文件上下文标识符
属性:Index
说明:在对象数组中的编号
属性:Left
说明:距离容器左边框的距离
属性:MovieWindowSize
说明:获得或设置电影窗口尺寸。取值为:
0 amvOriginalSize
1 amvadaoubleaoariginaSize
2 amvOneSixteenthSreen
3 amvOneFourthScreen
4 amvOneHalfScreen
属性:PlayCount
说明:获得或设置电影播放时间的数目
属性:Rate
说明:获得或设置多媒体的比率
属性:SelectionEnd
说明:获得或设置在什么位置停止播放
属性:SelectionStart
说明:获得或设置在什么位置开始播放
属性:ShowControls
说明:显示/隐藏控制面板。取值为:
True
False
属性:ShowDisplay
说明:显示/隐藏显示面板。取值为:
True
False
属性:ShowPositionControls
说明:显示/隐藏在控制面板位置按钮。取值为:
True
False
属性:ShowSelectiontionControls
说明:显示/隐藏在控制面板选择按钮。取值为:
True
False
属性:ShowTracker
说明:显示/隐藏在控制面板跟踪条。取值为:
True
False
属性:TabIndex
说明:获得或设置此对象在父窗体的编号(父窗体中对象响应Tab键的顺序)
属性:TabStop
说明:设置是否可以用"Tab"键选取此对象。取值为:
True 可以
False 不可以
属性:Tag
说明:存储程序所需的附加数据
属性:ToolTipText
说明:设置该对象的提示行
属性:Top
说明:距容器顶部边界的距离
属性:Visible
说明:设置此对象的可见性。取值为:
True 该对象可见
False 该对象不可见
属性:Volume
说明:获得或设置多媒体音量
属性:WhatsThisHelpID
说明:获得或设置与对象相关联的上下文号
属性:Width
说明:设置该对象的宽度
GetCurrentPosition()//播放位置
、ACTIVEMOVIE CONTROL OBJECT的常用属性
1、播放文件的函数:
void CActiveMovie3::Run()
{
InvokeHelper(0x60020001, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
2、暂停播放的函数:
void CActiveMovie3::Pause()
{
InvokeHelper(0x60020002, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
4、停止播放的函数:
void CActiveMovie3::Stop()
{
InvokeHelper(0x60020003, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
5、获得文件的函数:
CString CActiveMovie3::GetFileName()
{
CString result;
InvokeHelper(0xb, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
6、设置文件的函数:
void CActiveMovie3::SetFileName(LPCTSTR lpszNewValue)
{
static BYTE parms[] = VTS_BSTR;
InvokeHelper(0xb, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
lpszNewValue);
}
7、获得播放位置的函数:
double CActiveMovie3::GetCurrentPosition()
{
double result;
InvokeHelper(0xd, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, NULL);
return result;
}
8、设置播放位置的函数:
void CActiveMovie3::SetCurrentPosition(double newValue)
{
static BYTE parms[] = VTS_R8;
InvokeHelper(0xd, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
9、获得音量的函数:
long CActiveMovie3::GetVolume()
{
long result;
InvokeHelper(0x13, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
10、设置音量的函数:
void CActiveMovie3::SetVolume(long nNewValue)
{
static BYTE parms[] = VTS_I4;
InvokeHelper(0x13, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue);
}
11、设置自动开始播放的函数:
void CActiveMovie3::SetAutoStart(BOOL bNewValue)
{
static BYTE parms[] = VTS_BOOL;
InvokeHelper(0x28, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, bNewValue);
}