版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第6章 Visual Basic多媒體程序設(shè)計 Visual Basic是一個功能強大的編程環(huán)境,且與Windows系統(tǒng)緊密結(jié)合,對多媒體編程提供了豐富的支持。 利用Visual Basic進(jìn)行多媒體開發(fā)主要有兩種方法:利用多媒體控件和Windows API函數(shù)。 1. 多媒體控件多媒體控件 Visual Basic提供了幾種用于多媒體開發(fā)的控件,主要包括以下幾種:(1)Animation控件(2)MCI控件(3)ActiveMovie控件(4)PictureClip控件(5)MCIWnd控件(1)Animation控件 Animation控件也稱為無聲控件,用該控件可以播放無聲動畫文件 也不
2、是所有的無聲動畫文件都可以播放,它只能播放未經(jīng)壓縮的或者用RLE格式壓縮的無聲動畫文件。(2)MCI控件 MCI控件可用于管理多媒體控制接口(MCI)設(shè)備,這些設(shè)備包括聲卡、MIDI發(fā)生器、CD-ROM驅(qū)動器、音頻播放器、視頻播放器和視頻磁帶錄放器。 MCI控件具有一組執(zhí)行MCI命令的下壓式按鈕,包括播放、暫停、向后步進(jìn)、向前步進(jìn)、停止、錄制和彈出等。(3)ActiveMovie控件 ActiveMovie控件可以播放MPEG、AVI、MIDI和WAV等媒體文件,該控件是MCI控件的增強版本 ActiveMovie控件還自帶時間數(shù)字顯示和進(jìn)度控制,并可以隨意改變播放的起點。(4)Picture
3、Clip控件 PictureClip控件用于存儲快速顯示的位圖文件,在建立動畫或需要存儲大量的位圖文件時會用到它。(5)MCIWnd控件 MCIWnd控件的功能與MCI控件類似,但MCIWnd控件播放復(fù)合型多媒體設(shè)備,不能播放簡單型設(shè)備。2. 多媒體多媒體API函數(shù)函數(shù) 使用MCI控件開發(fā)Windows系統(tǒng)下的多媒體程序,具有簡單、快捷、方便的特點。但在實際程序設(shè)計中,常會碰到一些利用MCI控件不好解決的問題。 Visual Basic提供了直接調(diào)用Windows的API函數(shù)的功能,通過調(diào)用API函數(shù),可以實現(xiàn)對系統(tǒng)的各個層次的功能調(diào)用。 Windows的動態(tài)鏈接庫文件winmm.dll文件中
4、包含了100多個具有多媒體處理功能的API函數(shù),這些函數(shù)大多為低級的程序接口,可以用于處理語音、合成音樂、動畫、視頻等。常用的MCI高級API函數(shù) mciExecute:用于向MCI傳送一個命令字符串,以執(zhí)行各種播放操作。 mciSendString:也是向MCI傳送一個命令字符串,并可接受反饋信息。 mciGetErrorString GetShortPathName本章內(nèi)容6.1 Animation控件6.2 MCI控件6.3 MediaPlayer控件6.4多媒體API函數(shù)6.1 Animation控件 Animation 控件是一個動畫播放控件,Windows下的文件復(fù)制進(jìn)度欄就是使用
5、 Animation 控件的一個實例,在執(zhí)行復(fù)制操作時,紙頁從一個文件夾“飛”到另一個文件夾,非常形象地告訴用戶系統(tǒng)正在進(jìn)行拷貝動作。 6.1.1 Animation控件介紹6.1.2 Animation控件應(yīng)用實例6.1.1 Animation控件介紹(1)AutoPlay屬性 將AutoPlay屬性設(shè)置為True時,一旦加載.avi文件,Animation控件會自動連續(xù)循環(huán)地播放這個.avi文件。(2)Center屬性 Center屬性為True時,根據(jù)圖像的大小,在控件中心顯示.avi文件;當(dāng)設(shè)置為False時,.avi動畫定位在控件的左上角。(3)Open方法 Open方法打開一個要播
6、放的.avi文件。如果AutoPlay屬性設(shè)置為True,則一打開就開始播放,在關(guān)閉.avi文件或設(shè)置AutoPlay屬性設(shè)置為False之前,它都一直重復(fù)播放。(4)Play方法 Play方法使Animation控件播放.avi文件。并且可以設(shè)置重復(fù)播放次數(shù)和開始、結(jié)束幀。Animation控件介紹(續(xù))(5)Stop方法 Stop方法使Animation控件終止播放.avi文件。Stop方法僅終止那些用Play方法啟動的動畫。對通過設(shè)置AutoPlay屬性為True的自動播放,使用Stop方法會返回錯誤。可以通過設(shè)置AutoPlay屬性為False來終止播放。(6)Close方法 Clos
7、e方法使Animation控件關(guān)閉當(dāng)前打開的.avi文件。如果沒有加載任何文件,則Close方法不執(zhí)行任何操作,也不會產(chǎn)生任何錯誤。 6.1.2 Animation控件應(yīng)用實例 【例6.1】利用Animation控件設(shè)計一個簡單的播放.avi動畫的程序。 If cmdPlay.Caption = 播放 Then Animation1.Open App.Path & clock.avi 加載動畫文件 Animation1.Play cmdPlay.Caption = 停止 Else Animation1.Stop cmdPlay.Caption = 播放 End If說明 avi是Mic
8、rosoft公司開發(fā)的一種數(shù)字音頻與視頻文件格式,現(xiàn)已被大多數(shù)操作系統(tǒng)直接支持。avi格式允許視頻和音頻交錯在一起同步播放,但avi文件沒有限定壓縮標(biāo)準(zhǔn),由此導(dǎo)致avi文件格式不具有兼容性。不同壓縮標(biāo)準(zhǔn)生成的avi文件必須使用對應(yīng)的解壓縮算法才能進(jìn)行播放,故本例只能播放不含聲音的未壓縮或使用行程編碼(RLE)壓縮的avi文件。6.2 MCI控件 MCI是微軟Windows定義的多媒體接口標(biāo)準(zhǔn)。 MCI接口包括CDAudio、Scanner、VCR、Videodisc、DAT、DigitalVideo、MMMovie、Sequencer、WaveAudio等多媒體的主要產(chǎn)品,支持環(huán)境是Windo
9、ws 9x及以上版本。 MCI的最大優(yōu)點是應(yīng)用系統(tǒng)與設(shè)備無關(guān)性。對于標(biāo)準(zhǔn)多媒體設(shè)備,安裝相應(yīng)的Windows的MCI Driver,Windows即可對該設(shè)備進(jìn)行操作訪問;對于非標(biāo)準(zhǔn)的多媒體設(shè)備,有廠家提供所配的MCI Driver也可以操作。 由于MCI與設(shè)備的無關(guān)性,在多媒體應(yīng)用系統(tǒng)的開發(fā)中,無需了解每種產(chǎn)品細(xì)節(jié)就能開發(fā)出通用的多媒體應(yīng)用系統(tǒng)。應(yīng)用程序通過指定一個MCI設(shè)備的類型來區(qū)分不同的多媒體設(shè)備設(shè)備類型指明了設(shè)備的物理類型。MCI控件6.2.1 MCI控件介紹6.2.2 MCI控件應(yīng)用實例6.2.1 MCI控件介紹 MCI控件具有一組執(zhí)行MCI命令的下壓式按鈕。從左到右,依次是Pre
10、v、 Next、 Play、 Pause、 Back、 Step、 Stop、 Record 和 Eject按鈕,用于管理MCI設(shè)備的錄制和播放等(1)DeviceType屬性 MCI控件所支持的設(shè)備類型包括兩種:簡單設(shè)備和復(fù)合設(shè)備。 一個簡單的設(shè)備并不需要設(shè)備元素。例如,CD音頻就是一個已經(jīng)安裝好的設(shè)備,它們不需要應(yīng)用程序為其操作的媒體內(nèi)容提供任何信息。 對于復(fù)合的MCI設(shè)備,就需要應(yīng)用程序提供設(shè)備元素,即一個包含全部路徑名的源數(shù)據(jù)文件或目的文件。(2)Command屬性 MCI控件使用MCI命令實現(xiàn)對各種多媒體設(shè)備的控制,MCI命令是一套高層與設(shè)備無關(guān)的命令。其中許多命令直接與MCI控件的
11、按鈕直接對應(yīng)。 在用DeviceType屬性標(biāo)識了程序中想要使用的設(shè)備之后,就可用Command屬性把MCI命令發(fā)送給對應(yīng)設(shè)備了。 MCI控件本質(zhì)上是該命令集的Visual Basic接口,如Play或Close等命令在Win32API的MCI命令結(jié)構(gòu)中都有等價的命令,Play對應(yīng)MCI_PLAY。表6.3 列出了MCI控件使用的MCI命令,并列出了它們對應(yīng)的Win32命令。 實際使用時,可以用啟用這些命令。如:MMControl1.Command=”Play ” MCI控件使用的MCI命令 命令命令MCI 命令命令描述描述OpenMCI_OPEN打開打開MCI設(shè)備設(shè)備CloseMCI_CLO
12、SE關(guān)閉關(guān)閉MCI設(shè)備設(shè)備PlayMCI_PLAY用用MCI設(shè)備進(jìn)行播放設(shè)備進(jìn)行播放PauseMCI_PAUSE MCI_RESUME暫停播放暫停播放繼續(xù)播放繼續(xù)播放StopMCI_STOP停止停止MCI設(shè)備設(shè)備BackMCI_STEP向后步進(jìn)可用的曲目向后步進(jìn)可用的曲目StepMCI_STEP向前步進(jìn)可用的曲目向前步進(jìn)可用的曲目PrevMCI_SEEK使用使用Seek命令跳到當(dāng)前曲目的起始位置命令跳到當(dāng)前曲目的起始位置NextMCI_SEEK使用使用Seek命令跳到下一個曲目的起始位置命令跳到下一個曲目的起始位置SeekMCI_SEEK向前或向后查找曲目向前或向后查找曲目RecordMCI_
13、RECORD錄制錄制MCI設(shè)備的輸入設(shè)備的輸入EjectMCI_SET從從CD驅(qū)動器中彈出音頻驅(qū)動器中彈出音頻CDSaveMCI_SAVE保存打開的文件保存打開的文件(3)FileName屬性 指定Open命令將要打開的或者Save命令將要保存的文件。 如果在運行時要改變FileName屬性,就必須先關(guān)閉然后再重新打開MCI控件。(4)Tracks、Track、TrackLength、 TrackPosition 屬性 Tracks規(guī)定當(dāng)前MCI設(shè)備上可用的曲目個數(shù); Track規(guī)定關(guān)于TrackLength和TrackPosition屬性返回信息的曲目,該屬性僅用于獲得某個特定曲目的有關(guān)信息
14、,與當(dāng)前曲目無關(guān)。 TrackLength規(guī)定Track屬性給出的曲目的長度; TrackPosition規(guī)定Track屬性給出的曲目的起始位置。(5)UpdateInterval屬性 規(guī)定兩次連續(xù)的StatusUpdate事件之間的毫秒數(shù),如果毫秒數(shù)是0,表明沒有StatusUpdate事件發(fā)生。(6)Error和ErrorMessage屬性 通過Error和ErrorMessage屬性可以處理MCI控件產(chǎn)生的錯誤,并在每個命令后可以檢查錯誤情況。例如,在Open命令之后,可用下面的代碼檢查Error屬性的值,以判斷是否存在CD驅(qū)動器。如果沒有可用的CD驅(qū)動器,則返回錯誤信息。例如:If F
15、orm1.MMControl1.Error Then MsgBox Form1.MMControl1.ErrorMessage, vbCritical, “CD播放器不能正常工作”End If(7)ButtonVisible屬性 當(dāng)MCI 控件是可見(Visible屬性被設(shè)置為True)時,指定某個Button是否顯示或隱藏。如果MCI 控件是不可見,該屬性就不起作用。(8)ButtonClick事件 當(dāng)用戶在MCI 控件的按鈕上按下并釋放鼠標(biāo)按鈕時發(fā)生,Button可以是Back、Eject、Next、Pause、Play、Prev、Record、Step 或 Stop中的任意一種。(9)S
16、tatusUpdate事件 允許應(yīng)用程序更新顯示,以通知用戶當(dāng)前MCI設(shè)備的狀態(tài)。通過這一事件應(yīng)用程序可以從Position、Length和Mode等屬性中獲得狀態(tài)信息。 按UpdateInterval 屬性所給定的時間間隔自動地發(fā)生。(10)Mode屬性 返回打開的MCI 設(shè)備的當(dāng)前模式。MCI 控件的Mode值。 值值設(shè)備模式設(shè)備模式描述描述524mciModeNotOpen設(shè)備沒有打開設(shè)備沒有打開525mciModetop設(shè)備停止設(shè)備停止526mciModePlay設(shè)備正在播放設(shè)備正在播放527mciModeRecord設(shè)備正在記錄設(shè)備正在記錄528mciModeeek設(shè)備正在搜索設(shè)備正
17、在搜索529mciModePause設(shè)備暫停設(shè)備暫停530mciModeReady設(shè)備準(zhǔn)備好設(shè)備準(zhǔn)備好6.2.2 MCI控件應(yīng)用實例 【例6.2】 利用MCI控件設(shè)計一個音頻播放器。 6.3 MediaPlayer控件 使用MediaPlayer控件是播放視頻最簡捷的方法,MediaPlayer控件是Visual Basic 6.0新增加的多媒體控件,具有強大的多媒體播放功能,其操作方法類似于Windows操作系統(tǒng)附件中的Windows Media Player播放器。 6.3.1 MediaPlayer控件介紹6.3.2 MediaPlayer控件應(yīng)用實例6.3.1 MediaPlayer控
18、件介紹(1)AutoStart屬性:用于指定MediaPlayer控件是否可以自動播放多媒體文件。如果AutoStart屬性設(shè)置為True,則程序運行后可自動播放,否則,必須用Play方法播放。(2)AutoRewind屬性:用于指定是否自動回退,即在播放文件后滑動尺的滑塊是否能回到開始位置。如果設(shè)置為True,可自動回退。(3)FileName屬性:用于指定要播放的文件名,可以在屬性窗口中設(shè)置,也可以在運行期間設(shè)定。如果在屬性窗口中已為FileName屬性指定文件名,并且AutoStart屬性也已設(shè)置為True,則程序一運行就會自動播放該文件。(4)PlayCount屬性:用于指定播放次數(shù),
19、該屬性值必須大于0。MediaPlayer控件介紹(續(xù))(5)ShowAudioControls屬性:該屬性的值設(shè)置為True時,顯示與聲音有關(guān)的兩個按鈕,否則隱藏這兩個按鈕。(6)ShowControls屬性:該屬性的值設(shè)置為True時,顯示控制按鈕、滑動尺等;如果設(shè)置為False,則隱藏整個控制面板,即使其他屬性設(shè)置為True。(7)ShowDisplay屬性:該屬性的值設(shè)置為True時,顯示節(jié)目、剪輯、作者和版權(quán)等信息,否則不顯示。(8)ShowPositionControls屬性:用來指定位置移動按鈕的顯示和隱藏,如果設(shè)置為True,則顯示這些按鈕,否則隱藏這些按鈕。(9)ShowSt
20、atusBar屬性:用來指定是否顯示狀態(tài)條,默認(rèn)為False。MediaPlayer控件介紹(續(xù))(10)ShowTracker屬性:用來指定是否顯示滑動尺,默認(rèn)為False。(11)Play方法:用于播放多媒體文件,其格式為 MediaPlayer1.Play。與MCI控件相似的是,MediaPlayer控件可以播放多種格式的媒體文件。(12)Pause方法:用于暫停播放多媒體文件,其格式為 MediaPlayer1.Pause。(13)Stop方法:用于停止播放多媒體文件,其格式為 MediaPlayer1.Stop。6.3.2 MediaPlayer控件應(yīng)用實例 【例6.3】利用Medi
21、aPlayer控件設(shè)計一個視頻播放器。 說明 MediaPlayer是一個功能非常強大的多媒體控件,可以播放包括avi、wav、mpg、mp3、m3u等在內(nèi)的10多種格式的視頻、音頻文件,例如,我們可以很方便地利用它來設(shè)計一個MP3播放器。 6.4多媒體API函數(shù) 調(diào)用API函數(shù)之前,首先要用Declare語句說明將要調(diào)用的函數(shù),函數(shù)說明通常放在一個模塊(Module)中,以便在其他模塊或窗體文件中進(jìn)行調(diào)用。 語法格式 形式一:Declare Sub FunctionName Lib Filename(arguments) 形式二:Declare Function FunctionName L
22、ib Filename(arguments) FunctionName函數(shù)名稱,F(xiàn)ilename所在的動態(tài)鏈接庫(dll)的名稱。 形式一有返回值給應(yīng)用程序,形式二無返回值 Windows系統(tǒng)的winmm.dll等動態(tài)鏈接庫文件中存在大量用于多媒體編程的API函數(shù)本節(jié)內(nèi)容6.4.1 常用多媒體API函數(shù)簡介6.4.2 MCI指令概述6.4.3 MCI音頻指令6.4.4 MCI音頻指令應(yīng)用實例6.4.5 MCI MIDI指令6.4.6 MCI MIDI指令應(yīng)用實例6.4.7 MCI AVI指令6.4.8 MCI AVI指令應(yīng)用實例6.4.9 MCI CD Audio指令6.4.10 MCI CD
23、指令應(yīng)用實例6.4.1 常用多媒體API函數(shù)簡介 1. mciExecute()()函數(shù)函數(shù)2. mciSendString()()函數(shù)函數(shù)3. mciGetErrorString()()函數(shù)函數(shù)4. GetShortPathName()()函數(shù)函數(shù)1. mciExecute()()函數(shù)函數(shù) 函數(shù)的說明如下: Public Declare Function mciExecute Lib winmm.dll Alias mciExecute (ByVal lpstrCommand As String) As Long 參數(shù)lpstrCommand表示MCI指令字符串,實際調(diào)用時,只要送入某一MC
24、I指令字符串即可,如: m%=mciExecute(”open CDAudio alias CD”) 該語句的功能是打開一個CD設(shè)備。 如果在執(zhí)行mciExecute()時出現(xiàn)錯誤,則MCI將給出一個對話框,并且返回一個非零的錯誤代碼。 可用mciSendString()函數(shù)處理該錯誤信息, 。2. mciSendString()()函數(shù)函數(shù) 函數(shù)的說明如下: Public Declare Function mciSendString Lib winmm.dll Alias mciSendStringA (ByVal lpstrCommand As String, ByVal lpstrRet
25、urnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long 參數(shù)lpstrCommand表示MCI指令字符串; 參數(shù)lpstrReturnString指向一個預(yù)先分配的緩沖區(qū),用來接收MCI命令的執(zhí)行結(jié)果,該參數(shù)可以設(shè)置成vbNullString,表示不接收MCI命令的執(zhí)行結(jié)果; 參數(shù)uReturnLength表示緩沖區(qū)的大小,如果lpstrReturnString參數(shù)可以設(shè)置成vbNullString,則該參數(shù)可設(shè)置為0; 參數(shù)hwndCallback為傳入hWnd,用以接收MCI
26、命令執(zhí)行過程的通知碼,如果不需要通知碼,則可設(shè)置為0。 如果mciSendString()函數(shù)調(diào)用成功,則返回0;如果調(diào)用不成功,它將會返回一個非零的錯誤代碼。3. mciGetErrorString()()函數(shù)函數(shù) 函數(shù)的說明如下: Public Declare Function mciGetErrorString Lib winmm.dll Alias mciGetErrorStringA (ByVal dwError As Long, ByVal lpstrBuffer As String, ByVal uLength As Long) As Long mciGetErrorString
27、()函數(shù)的功能是解釋MCI錯誤代碼的含義。 l 參數(shù)dwError是錯誤代碼,來自mciSendString函數(shù)的返回值; l 參數(shù)lpstrBuffer為描述錯誤的字符串; l 參數(shù)uLength為參數(shù)lpstrBuffer的字符串的長度。 如果函數(shù)調(diào)用成功,則返回非0值,否則返回0值。4. GetShortPathName()()函數(shù)函數(shù) 函數(shù)的說明如下: Public Declare Function GetShortPathName Lib kernel32 Alias GetShortPathNameA (ByVal lpszLongPath As String, ByVal lps
28、zShortPath As String, ByVal cchBuffer As Long) As Long GetShortPathName()函數(shù)的功能是把文件名轉(zhuǎn)換為對應(yīng)的短文件名。 l 參數(shù)lpszLongPath為長文件名; l 參數(shù)lpszShortPath為短文件名; l 參數(shù)cchBuffer為參數(shù)lpszShortPath的字符串的長度。 如果函數(shù)調(diào)用成功,則返回短文件名的字節(jié)數(shù);否則返回0值。GetShortPathName()()函數(shù)函數(shù) 這個函數(shù)與MCI指令沒有直接關(guān)系,在播放長文件名的媒體文件時要用到它。若在長文件名中含有空格,則MCI驅(qū)動程序不能對它進(jìn)行正確解釋,因
29、而無法播放,必須把它轉(zhuǎn)換成相應(yīng)的短文件名才能放到MCI指令中。例如: 文件名:C:WINNTMediaThe Microsoft Sound.wav 轉(zhuǎn)換為:C:WINNTMediaTHEMIC1.WAV 一般來說,只使用上述幾個函數(shù)就可以編寫多媒體應(yīng)用程序了。但是,在調(diào)用這些函數(shù)執(zhí)行多媒體操作時,必須提供適當(dāng)?shù)膮?shù),其中最主要的參數(shù)是MCI指令字符串。 6.4.2 MCI指令概述 MCI指令是以文字為基礎(chǔ)的程序接口,它用自然語言的方式將MCI指令組合成一段文字,這樣的一段文字即為MCI指令串。 把MCI指令字符串作為參數(shù)傳送給mciExecute等API函數(shù),便可實現(xiàn)對多媒體設(shè)備的控制。1.
30、 1. MCIMCI命令的分類命令的分類MCI命令總共分為四大類: 系統(tǒng)命令(System Commands):直接由MCI解釋并執(zhí)行此類命令,如break、sound、sysinfo等。 請求命令(Required Commands):此類命令可取得多媒體設(shè)備的相關(guān)信息或開啟、關(guān)閉這些設(shè)備等,如capability、info、status、open、close等。 基本命令(Basic Commands):對多媒體設(shè)備除、開啟關(guān)閉之外的媒體控制功能,如load、pause、set、play、record、resume、save、seek、stop等。 擴展命令(Extended Comman
31、ds) 擴展包含兩個方面,一是特殊多媒體設(shè)備類型的擴展;其二是請求命令和基本命令的擴展。2. MCI命令字符串的語法格式命令字符串的語法格式 MCI指令字符串有 3個部分,其語法格式: command device_name arguments command表示所使用的MCI指令,如play、open、record、save等; device_name指出所使用的設(shè)備類型、文件名稱或別名。對于復(fù)合型設(shè)備,設(shè)備名必須是文件名,并不能省略擴展名,擴展名必須是使用標(biāo)準(zhǔn)擴展名,MCI根據(jù)文件的擴展名判斷所使用的設(shè)備類型。別名是為設(shè)備或者文件另外取的名字,它主要是為了簡化MCI字符串、避免重復(fù)輸入設(shè)備
32、名或文件名,如,下面的語句將打開一個avi文件,并給它一個別名AVI: open c:testclock.avi alias AVI 下面的操作便可以對這個別名進(jìn)行,語句可以寫成: play AVI wait close AVI arguments參數(shù),并不是每一個MCI命令都必須使用到的,應(yīng)視需求而定。例如使用Play命令就要用到from及to這兩個參數(shù)來表示起始及結(jié)束的位置。 如,播放CD光盤上第l首到第5首曲目,其命令格式為: play cdaduio from l to 5 3. 四個常用參數(shù)四個常用參數(shù) shareable參數(shù) all參數(shù) new參數(shù) wait參數(shù)(1)shareab
33、le參數(shù) 使用shareable參數(shù),可讓不同的應(yīng)用程序同時使用相同的多媒體設(shè)備。如:open cdaudio shareable 如果把一個設(shè)備設(shè)定為可共享設(shè)備,則不能在程序中測試這個設(shè)備的狀態(tài),因為它隨時都可能被其他程序使用而改變狀態(tài)。 需要注意的是,并不是每種設(shè)備都可以設(shè)置為可共享的,大多數(shù)復(fù)合型設(shè)備無法與其他程序共享,雖然可以多次打開同一個文件,但每次都要給它賦予一個不同的別名。(2)all參數(shù) 對于某些指令,可以在命令格式中設(shè)備名部分使用all參數(shù)。這樣MCI會依次把這個指令傳送給每個已經(jīng)打開的設(shè)備。例如:close all 將關(guān)閉所有已打開的多媒體設(shè)備。(3)new參數(shù) new參數(shù)
34、用于指定新建一個文件,比如在錄音時,具體文件名可以在save指令存儲該文件給定,如下列一段代碼即為打開一個新文件給語音設(shè)備使用,然后開始錄音,停止錄音,保存錄音,關(guān)閉錄音設(shè)備。 Open new type waveaudio alias sounds Record sounds Stop sounds Save sounds c:testtest.wav Close sounds(4)wait參數(shù) 對于下列這段代碼,如果缺少wait參數(shù),執(zhí)行后你聽不到任何聲音。這是因為一般情況下,執(zhí)行MCI指令之后,會立即將控制權(quán)交回,也就是執(zhí)行play命令后,會立即執(zhí)行stop命令,即播放剛開始就被終止。有
35、了wait參數(shù),指定的多媒體設(shè)備執(zhí)行完這個指令后,才將控制權(quán)交回應(yīng)用程序。 open c:winntMediatada.wav alias sounds play sounds wait stop sounds4. 在立即窗口中練習(xí)在立即窗口中練習(xí)MCI指令指令為了解MCI指令的功能,可以在立即窗口中反復(fù)練習(xí)MCI指令字符串: 新建工程文件,執(zhí)行“工程”菜單中“添加模塊”命令,打開模塊代碼窗口。 在標(biāo)準(zhǔn)模塊窗口中聲明API函數(shù):Public Declare Function mciExecute Lib winmm.dll Alias mciExecute (ByVal lpstrComman
36、d As String) As Long 執(zhí)行“視圖”菜單中“立即窗口”命令(或按Ctrl+G),打開“立即”窗口。 在“立即”窗口中輸入要執(zhí)行的MCI指令字符串,如圖6-9所示。 6.4.3 MCI音頻指令 1. open指令指令 功能:是打開音頻設(shè)備或語音文件。 指令格式:open 設(shè)備名 參數(shù)notifywait 例如,下面的語句將打開語音文件,并賦予別名sound: open C:winntMediatada.wav alias sound type waveaudio 2. play指令指令 功能:是播放語音。 指令格式:play 設(shè)備名 參數(shù)notifywait 參數(shù)可以是 fro
37、m postion1 to position2,如果省略,則從開始位置或當(dāng)前位置開始播放至文件結(jié)束。例如,下面的語句將從文件的第10秒開始至50秒(sound為open命令中使用的別名,并假定文件長度超過50秒):play sound from 30000 to 50000 MCI音頻指令(續(xù)) 3. save指令指令 功能:是保存當(dāng)前的語音內(nèi)容。 指令格式:save設(shè)備名 參數(shù)notifywait 參數(shù)為filename,用于指定保存數(shù)據(jù)的文件名及路徑。如:save sound C:testtest.wav 4. record指令指令 功能:是開始錄音,在使用本指令之前,需用open指令打開
38、一個文件以供存儲數(shù)據(jù)。 指令格式:record設(shè)備名 參數(shù)notifywait 參數(shù)可以取的值見表6.7 5. pause指令指令 功能:是暫停播放或錄音。指令格式:pause 設(shè)備名。MCI音頻指令(續(xù))6. resume指令指令 功能:是恢復(fù)執(zhí)行pause指令暫停的操作。 指令格式:resume 設(shè)備名。7. close指令指令 功能:是關(guān)閉語音設(shè)備。 指令格式:close 設(shè)備名。8. set指令指令 功能:是設(shè)置語音設(shè)備的各種狀態(tài)。 指令格式:set 設(shè)備名 參數(shù)notifywait 參數(shù)常見的取值見表6.89. seek指令指令 功能:是對語音文件定位。 指令格式:seek 設(shè)備名
39、參數(shù)notifywait 參數(shù)可以取的值見表6.9MCI音頻指令(續(xù))10. status指令指令 功能:是取得語音設(shè)備的相關(guān)信息。 指令格式:status 設(shè)備名 參數(shù)notifywait 參數(shù)常見的取值見表 MCI音頻指令應(yīng)用實例 【例6.4】利用Windows API函數(shù)及MCI音頻指令設(shè)計一個小小錄音器。6.4.5 MCI MIDI指令 一般情況下,MIDI序列發(fā)生器通過驅(qū)動程序mciseq.drv處理與MIDI有關(guān)的MCI指令,因此常把MIDI序列發(fā)生器稱為MCISEQ設(shè)備。但它只能播放midi音樂,不能錄音。 MCI MIDI指令1. open指令指令 功能:是打
40、開并初始化MIDI序列發(fā)生器。 指令格式:open 設(shè)備名 參數(shù) 例如,下面的語句將打開文件canyon.mid,并賦予別名MIDI: open C:winntMediacanyon.mid alias MIDI type sequencer2. play指令指令 功能:是播放MIDI音樂。 指令格式:play 設(shè)備名 參數(shù) 例如,播放MIDI音樂片段可用下面語句(時間格式為ms): play MIDI from 30000 to 50000 3. pause指令指令 功能:是暫停播放。 指令格式:pause 設(shè)備名。MCI MIDI指令(續(xù))4. resume指令指令 功能:是恢復(fù)執(zhí)行pau
41、se指令暫停的操作。 指令格式:resume 設(shè)備名。5. close指令指令 功能:是關(guān)閉MIDI序列發(fā)生器。 指令格式:close 設(shè)備名。6. set指令指令 功能:是設(shè)置MIDI序列發(fā)生器的各種狀態(tài)。 指令格式:set 設(shè)備名 參數(shù)notifywait7. seek指令指令 功能:查找MIDI文件中指定的位置。 指令格式:seek 設(shè)備名 參數(shù) 參數(shù)可以取的值見表6.11 MCI MIDI指令(續(xù)) 8. status指令指令 功能:是取得MIDI序列發(fā)生器的信息。 指令格式:status 設(shè)備名 參數(shù)參數(shù)常見的取值見表6.12 6.4.6 MCI MIDI指令應(yīng)用實例 【例6.5】利
42、用Windows API函數(shù)及MCI MIDI指令設(shè)計一個MIDI播放器。 6.4.7 MCI AVI指令 前面介紹了用于播放WAV文件和MIDI音樂的MCI指令。這兩種指令只能播放聲音,沒有動態(tài)畫面。 AVI指令可用來播放AVI文件,具有和電影類似的效果,下面是常用的MCI AVI指令,在指令格式中,設(shè)備名一般為avi文件,可為其指定一個別名(alias)。此外,每個指令都可帶notify和wait參數(shù)。MCI AVI指令1. configure指令指令 功能:是打開并顯示一個對話框,用來設(shè)置AVI的播放。 指令格式:configure設(shè)備名 例如,下面的命令將打開設(shè)置播放別名為AVI的對話
43、框。 configure AVI2. open指令指令 功能:是打開AVI播放設(shè)備。 指令格式:open 設(shè)備名 參數(shù) 參數(shù)常見的取值見表6.13 例如,下面的語句將打開文件Clock.avi,并賦予別名AVI: open c:winntClock.avi alias AVI type AVIVideoMCI AVI指令(續(xù))3. play指令指令 功能:是播放AVI。 指令格式:play 設(shè)備名 參數(shù) 參數(shù)可以取的值見表6.14 例如,以全屏幕方式播放第50150幀可用下面語句: play AVI from 50 to 150 fullscreen 4. pause指令指令 功能:是暫停播放
44、。指令格式:pause 設(shè)備名5. put指令指令 功能:是定義AVI的原窗口和目標(biāo)窗口。 指令格式:put 設(shè)備名 參數(shù) 參數(shù)可以取的值見表6.15 例如,顯示200300AVI的上半部分畫面可用下面語句: put AVI source at 0,0,200,150 window AVI state showMCI AVI指令(續(xù))6. realize指令指令 功能:是設(shè)置播放AVI時所引用的調(diào)色板。 指令格式:realize 設(shè)備名 參數(shù) 參數(shù)可以取的值見表6.167. update指令指令 功能:是重畫當(dāng)前畫面。 指令格式:update 設(shè)備名 參數(shù) 參數(shù)為at rectangle指定要
45、重畫的區(qū)域,rectangle是以x1,y1,x2,y2形式表示的區(qū)域,其中x1,y1表示區(qū)域的左上角,x2,y2表示區(qū)域的右上角。它們都是以像素為單位。8. where指令指令 功能:是取得播放AVI原窗口和目標(biāo)窗口的坐標(biāo)。 指令格式:where 設(shè)備名 參數(shù) 如果參數(shù)為destination,則取得目標(biāo)窗口的坐標(biāo);如果參數(shù)為source,則取得原窗口的坐標(biāo)。MCI AVI指令(續(xù))9. windows指令指令 功能:是取得播放AVI原窗口目標(biāo)窗口的坐標(biāo)。 指令格式:windows 設(shè)備名 參數(shù) 參數(shù)常見的取值見表6.1710. setaudio指令指令 功能:是設(shè)置播放動態(tài)視頻時的音量。 指令格式:setaudio 設(shè)備名 參數(shù) 參數(shù)可以取的值見表6.18 例如,把播放時的音量設(shè)置為3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025出租車司機用工合同范本
- 2025商鋪租賃合同簡單的范本
- 全新清算協(xié)議合同-二零二五年度清算與債務(wù)重組3篇
- 2025年度全新合同:人工智能輔助駕駛系統(tǒng)研發(fā)與推廣協(xié)議3篇
- 2025年度環(huán)保設(shè)備安裝與環(huán)保技術(shù)咨詢合同3篇
- 2025年度農(nóng)村房屋改造裝修與農(nóng)村光伏發(fā)電項目合同
- 二零二五年度出國工人勞務(wù)輸出與職業(yè)規(guī)劃合同
- 二零二五年度智能漁業(yè)養(yǎng)魚設(shè)備共享合作協(xié)議3篇
- 2025年度農(nóng)業(yè)科技賒銷合作協(xié)議3篇
- 2025年度水上安全事故處理與救援合作協(xié)議3篇
- !懸臂式擋土墻計算軟件
- 運維應(yīng)急預(yù)案
- GB 4806.7-2023食品安全國家標(biāo)準(zhǔn)食品接觸用塑料材料及制品
- 工程造價審計投標(biāo)方案
- 辦公樓裝修環(huán)境與對策分析
- 《web前端技術(shù)》課程標(biāo)準(zhǔn)
- 9高考語文透析一題·詩歌鑒賞(手法技巧)《柳梢青 送盧梅坡 》
- 織金縣實興鄉(xiāng)白龍重晶石礦5.0萬t-a(新建)項目環(huán)評報告
- 妊娠期肝內(nèi)膽汁淤積癥教學(xué)課件
- 【航空個性化服務(wù)淺析4700字(論文)】
- 保障農(nóng)民工工資支付條例全文及解讀課件
評論
0/150
提交評論