控件本身雖然是微軟作的但還是覺得有些不足,有些接口提供的不夠友好,用起來(lái)要自己建立函數(shù),有些在較低版本的MSDN中都查不到,很麻煩啊。
正文:
實(shí)現(xiàn)該控件的注冊(cè)
在VC里沒有ActiveMovieControl Object這個(gè)控件
"開始"->"運(yùn)行"->"輸入regsvr32 msdxm.ocx"->"確定"
會(huì)彈出一個(gè)對(duì)話框說(shuō)成功的!! 注冊(cè)成功,
進(jìn)入VC Project->Add To Project->Components And Controls.點(diǎn)擊打開出現(xiàn)的Components And Controls Gallery文件,選擇其中的ActiveMovie Control Object,單擊Insert
就可以在VC控件選擇欄里看到該控件的圖標(biāo)了!
ActiveMovie控件是微軟公司推出的用于多媒體程序設(shè)計(jì)的控件,它提供了非常完善的音頻和視頻媒體文件的回放功能,能支持多種文件格式,從最常見的WAV文件和AVI文件到使用MPEG壓縮格式的VCD視頻文件,都可以正常的進(jìn)行播放。控件能根據(jù)文件后綴進(jìn)行自動(dòng)判別設(shè)備類型,并完成相應(yīng)的控制。因此,若正在編寫的應(yīng)用程序需要提供多媒體支持,那么使用ActiveMovie控件是一個(gè)很好的主意。事實(shí)上,很多優(yōu)秀的多媒體應(yīng)用程序,其內(nèi)部的多媒體回放就是利用ActiveMovie控件來(lái)實(shí)現(xiàn)。只要精心地設(shè)計(jì)應(yīng)用程序的用戶界面,我們一樣可以開發(fā)出功能齊全、外觀漂亮、具有相當(dāng)水準(zhǔn)的多媒體播放器。而且,在Windows 95/98和Windows NT的最新版本中,ActiveMovie控件已作為操作系統(tǒng)的一部分來(lái)提供,即使用戶系統(tǒng)中沒有安裝ActiveMovie控件,Microsoft的許可協(xié)議也允許在你的應(yīng)用程序的發(fā)行包中發(fā)布ActiveMovie的運(yùn)行時(shí)文件。
本文將首先介紹ActiveMovie控件一些特有的屬性、方法和事件,然后使用該控件開發(fā)一個(gè)具有一定功能的多媒體播放器,最后結(jié)合本例談一談使用ActiveMovie控件進(jìn)行多媒體開發(fā)時(shí)需要注意的幾個(gè)問題。
一、ActiveMovie控件特有的屬性、方法和事件
ActiveMovie控件的特有屬性及相關(guān)描述見表1。其它各控件常有的屬性如BorderStyle、
DisplayForeColor、hWnd等,該控件也支持。
ActiveMovie控件特有的屬性表 表1
屬性 說(shuō)明
CurrentState 指示控件的狀態(tài):stopped、paused、running
DisplayMode 顯示模式,即以時(shí)間方式還是幀方式
FileName 指定該控件要操作的源文件完整名字
Rate 指示媒體流的回放率
ReadyState 指示控件狀態(tài),是否已經(jīng)裝入源文件
SelectionEnd 指示播放媒體流的結(jié)束位置
SelectionStart 指示播放媒體流的開始位置
CurrentPosition 指示播放媒體流的當(dāng)前位置
Volume 設(shè)置音量
ActiveMovie控件常用方法有RUN、STOP、PAUSE三個(gè),分別控制媒體流的播放、停止和暫停。使用時(shí)直接調(diào)用它們即可。其它通用方法如Drag 、Move、SetFocus等,該控件也支持。
ActiveMovie控件的特有事件及相關(guān)描述見表2。
ActiveMovie控件特有的事件表 表2
事件 說(shuō)明
DisplayModeChange 當(dāng)DisplayMode屬性值發(fā)生變化時(shí)觸發(fā)
OpenComplete 當(dāng)源文件完全載入時(shí)觸發(fā)
PositionChange 當(dāng)媒體流的當(dāng)前位置改變時(shí)觸發(fā)
ReadyStateChange 當(dāng)控件的ReadyState屬性值改變時(shí)觸發(fā)
StateChange 當(dāng)播放器的狀態(tài)改變時(shí)觸發(fā)
Error 處理控件的出錯(cuò)事件
1.Active movie control object 的功能
Authorware作為強(qiáng)大的多媒體著作工具,支持主流的媒體格式,通過調(diào)用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)等(在系統(tǒng)中所安裝的Windows Media Player的版本不同,所支持的格式有所不同)。
2.Active movie control object的常用屬性
"AllowChangeDisplaySize"--運(yùn)行時(shí)是否允許改變顯示大小。默認(rèn)為TRUE。
"CurrentPosition"--當(dāng)前的播放位置。默認(rèn)值為-1。
"DisplayMode"--設(shè)置播放時(shí)的顯示模式,可選值為"0-Time"--顯示時(shí)間、"1-Frames"--顯示幀。默認(rèn)為"0-Time"。
"DisplaySize"--設(shè)置播放時(shí)的顯示大小,可選值有"0-0-Default Size"--默認(rèn)大小、"1-1-Half Size"--正常大小的一半、"2-2-Double Size"--正常大小的雙倍、"3-3-FullScreen"--全屏、"4-4-Fit to Size"--適當(dāng)大小、"5-5-One Sixteenth Screen"--1/16屏幕大小、"6-6-One Fourth Screen"--1/4屏幕大小、"7-7 One Half Screen"--1/2屏幕大小。默認(rèn)為"0-0-Default Size"。
"EnableContextMenu"--在畫面中按右鍵時(shí),是否允許出現(xiàn)控制菜單。默認(rèn)為TRUE。
"Enabled"--設(shè)置控件是否有用。默認(rèn)為TRUE。
"Filename"--設(shè)置播放的文件名。
"EnableFullScreenControls"--設(shè)置是否有全屏控制。默認(rèn)為FALSE。
"PlayCount"--設(shè)置播放次數(shù)。默認(rèn)值為1。
"PlayState"--播放狀態(tài),其值隨控件中的文件播放情況而變,可能是"0-Playback is stopped"--播放已停止、"1-Playback is paused"--播放被暫停、"2-Stream is playing"--數(shù)據(jù)流正在播放、"3-Wait for stream to begin"--等待數(shù)據(jù)流開始、"4-Stream is scanning forward"--正在向前搜索、"5- Stream is scanning in reverse"--正在向后搜索、"6-Stream has not been Opened"--還未打開。
"Rate"--設(shè)置播放時(shí)的速率,為1時(shí)是正常播放,大于1時(shí)是快進(jìn)。
"ReadyState"--準(zhǔn)備狀態(tài),其值隨控件中的文件播放情況而變,可能是"0-0-Uninitialized"--未初始化、"1-1-Loading"--正在載入、"3-3-Interactive"--正在連接、"4-4-Complete"--已完成。
"SelectionEnd"--設(shè)置播放的結(jié)束位置。默認(rèn)值為-1,即播放到結(jié)尾。
"SelectionStart"--設(shè)置播放的開始位置。默認(rèn)值為-1,即從頭播放。
"ShowControls"--是否顯示控制面板。默認(rèn)為TRUE。
"ShowDisplay"--是否顯示顯示面板。默認(rèn)為FALSE。
"ShowPositionControls"--在控制面板中是否顯示位置按鈕。默認(rèn)為TRUE。
"ShowTracker"--在控制面板中是否顯示音軌欄。默認(rèn)為FALSE。
"Volume"--設(shè)置音量。默認(rèn)值為-320。
3.Active movie control object的常用方法
"FastForward"--快進(jìn)
"FastReverse"--快退
"Next"--下一個(gè)
"Pause"--暫停
"Play"--播放
"Previous"--前一個(gè)
"Stop"--停止
4.Active movie control object的常用事件
"EndofStream"--當(dāng)播放結(jié)束時(shí)產(chǎn)生此事件
"PlayStateChange"--當(dāng)播放狀態(tài)改變時(shí)產(chǎn)生此事件
"PositionChange"--當(dāng)播放位置改變時(shí)產(chǎn)生此事件
?
ActiveMovie控件用于播放視頻。常用屬性表
屬性:(Name)
說(shuō)明:ActiveMovie控件的名稱
屬性:自定義
說(shuō)明:打開屬性頁(yè)
屬性:AllowChangeDisplayMode
說(shuō)明:在運(yùn)行中允許/不允許改變顯示方式。取值為:
True
False
屬性:AllowHideControls
說(shuō)明:在運(yùn)行中允許/不允許隱匿控制面板。取值為:
True
False
屬性:AllowHideDisplay
說(shuō)明:在運(yùn)行中允許/不允許隱匿顯示面板。取值為:
True
False
屬性:Appearance
說(shuō)明:是否用立體效果繪制。取值為:
0 amv(平面)
1 amv3D(立體)
屬性:AutoRewind
說(shuō)明:媒體播放完后是否自定重放。取值為:
True
False
屬性:AutoStart
說(shuō)明:在打開媒體文件后是否自定播放。取值為:
True
False
屬性:Balance
說(shuō)明:獲得或設(shè)置多媒體立體聲的平衡
屬性:BorderStyle
說(shuō)明:設(shè)置邊界樣式。取值為:
0 amvNone(無(wú)邊界線)
1 amvFixedSingle(固定單線框)
屬性:Causidation
說(shuō)明:該控件獲得焦點(diǎn)時(shí),第二個(gè)控件的Validate事件是否發(fā)生。取值為:
True 發(fā)生
False 不發(fā)生
屬性:DisplayBackColor
說(shuō)明:顯示面板背景顏色。可從彈出的調(diào)色板選擇。
屬性:DisplayForeColor
說(shuō)明:顯示面板前景顏色??蓮膹棾龅恼{(diào)色板選擇。
屬性:DisplayMode
說(shuō)明:獲得或設(shè)置顯示方式(時(shí)間或結(jié)構(gòu))。取值為:
0 amvTime(時(shí)間)
1 amvFrames(結(jié)構(gòu))
屬性:DragIcon
說(shuō)明:該對(duì)象在拖動(dòng)過程中鼠標(biāo)的圖標(biāo)
屬性:DragMode
說(shuō)明:該對(duì)象的拖動(dòng)模式。取值為:
0 vbManual(手動(dòng))
1 vbAutomatic(自動(dòng))
屬性:EnableContextMenu
說(shuō)明:?jiǎn)螕粲益I是否顯示上下文菜單。取值為:
True
False
屬性:Enabled
說(shuō)明:用于設(shè)定是或?qū)κ录a(chǎn)生響應(yīng)。取值為:
True 可用
False 不可用。在執(zhí)行程序時(shí),該對(duì)象用灰色顯示,并且不響應(yīng)任何事件
屬性:EnablePositionControls
說(shuō)明:在控制面板是否顯示位置按鈕。取值為:
True
False
屬性:EnableSelectiontionControls
說(shuō)明:在控制面板是否顯示選擇按鈕。取值為:
True
False
屬性:EnableTracker
說(shuō)明:在控制面板是否顯示跟蹤條。取值為:
True
False
屬性:FileName
說(shuō)明:獲得或設(shè)置當(dāng)前的多媒體文件
屬性:FullScreenMode
說(shuō)明:是否全屏幕顯示。取值為:
True
False
屬性:Height
說(shuō)明:ActiveMoviel控件的高度
屬性:HelpContextID
說(shuō)明:指定一個(gè)對(duì)象的缺省幫助文件上下文標(biāo)識(shí)符
屬性:Index
說(shuō)明:在對(duì)象數(shù)組中的編號(hào)
屬性:Left
說(shuō)明:距離容器左邊框的距離
屬性:MovieWindowSize
說(shuō)明:獲得或設(shè)置電影窗口尺寸。取值為:
0 amvOriginalSize
1 amvadaoubleaoariginaSize
2 amvOneSixteenthSreen
3 amvOneFourthScreen
4 amvOneHalfScreen
屬性:PlayCount
說(shuō)明:獲得或設(shè)置電影播放時(shí)間的數(shù)目
屬性:Rate
說(shuō)明:獲得或設(shè)置多媒體的比率
屬性:SelectionEnd
說(shuō)明:獲得或設(shè)置在什么位置停止播放
屬性:SelectionStart
說(shuō)明:獲得或設(shè)置在什么位置開始播放
屬性:ShowControls
說(shuō)明:顯示/隱藏控制面板。取值為:
True
False
屬性:ShowDisplay
說(shuō)明:顯示/隱藏顯示面板。取值為:
True
False
屬性:ShowPositionControls
說(shuō)明:顯示/隱藏在控制面板位置按鈕。取值為:
True
False
屬性:ShowSelectiontionControls
說(shuō)明:顯示/隱藏在控制面板選擇按鈕。取值為:
True
False
屬性:ShowTracker
說(shuō)明:顯示/隱藏在控制面板跟蹤條。取值為:
True
False
屬性:TabIndex
說(shuō)明:獲得或設(shè)置此對(duì)象在父窗體的編號(hào)(父窗體中對(duì)象響應(yīng)Tab鍵的順序)
屬性:TabStop
說(shuō)明:設(shè)置是否可以用"Tab"鍵選取此對(duì)象。取值為:
True 可以
False 不可以
屬性:Tag
說(shuō)明:存儲(chǔ)程序所需的附加數(shù)據(jù)
屬性:ToolTipText
說(shuō)明:設(shè)置該對(duì)象的提示行
屬性:Top
說(shuō)明:距容器頂部邊界的距離
屬性:Visible
說(shuō)明:設(shè)置此對(duì)象的可見性。取值為:
True 該對(duì)象可見
False 該對(duì)象不可見
屬性:Volume
說(shuō)明:獲得或設(shè)置多媒體音量
屬性:WhatsThisHelpID
說(shuō)明:獲得或設(shè)置與對(duì)象相關(guān)聯(lián)的上下文號(hào)
屬性:Width
說(shuō)明:設(shè)置該對(duì)象的寬度
GetCurrentPosition()//播放位置
、ACTIVEMOVIE CONTROL OBJECT的常用屬性
1、播放文件的函數(shù):
void CActiveMovie3::Run()
{
InvokeHelper(0x60020001, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
2、暫停播放的函數(shù):
void CActiveMovie3::Pause()
{
InvokeHelper(0x60020002, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
4、停止播放的函數(shù):
void CActiveMovie3::Stop()
{
InvokeHelper(0x60020003, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
5、獲得文件的函數(shù):
CString CActiveMovie3::GetFileName()
{
CString result;
InvokeHelper(0xb, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
6、設(shè)置文件的函數(shù):
void CActiveMovie3::SetFileName(LPCTSTR lpszNewValue)
{
static BYTE parms[] = VTS_BSTR;
InvokeHelper(0xb, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
lpszNewValue);
}
7、獲得播放位置的函數(shù):
double CActiveMovie3::GetCurrentPosition()
{
double result;
InvokeHelper(0xd, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, NULL);
return result;
}
8、設(shè)置播放位置的函數(shù):
void CActiveMovie3::SetCurrentPosition(double newValue)
{
static BYTE parms[] = VTS_R8;
InvokeHelper(0xd, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
9、獲得音量的函數(shù):
long CActiveMovie3::GetVolume()
{
long result;
InvokeHelper(0x13, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
10、設(shè)置音量的函數(shù):
void CActiveMovie3::SetVolume(long nNewValue)
{
static BYTE parms[] = VTS_I4;
InvokeHelper(0x13, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue);
}
11、設(shè)置自動(dòng)開始播放的函數(shù):
void CActiveMovie3::SetAutoStart(BOOL bNewValue)
{
static BYTE parms[] = VTS_BOOL;
InvokeHelper(0x28, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, bNewValue);
}
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
