?? 編寫多媒體播器時,怎樣才能實現(xiàn)遁環(huán)播放.txt
字號:
一 個 專 用 的 API函 數(shù) ,SndPlaySound(), 此 函 數(shù) 是 一 個 可 獨 立 播 放 WAV 語 音 文 件 的 函 數(shù) , 使 用 相 對 來 說 較 為 簡 單 ,無 需 使 用 MMControl, 下 面 的 例 子 可 直 接 播 放 TEST.WAV文 件 :
Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
i=SndPlaySound("test.wav",SND_LOOP), 最 后 一 個 參 數(shù) 可 設(shè) 置 。 SND_LOOP表 示 遁 環(huán) 播 放 。 更 具 體 的 說 明 可 查 閱 MSDN, 成 功 的 話 返 回 true。
利 用 多 媒 體 的 mciSendString API 函 數(shù) , 再 搭 配 mci(multimedia control interface) 指 令 , 即 可 播 放 .wav 聲 音 文 件 , 細 節(jié) 如 下 :
1. API 的 聲 明 :
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
注 : 如 果 以 上 的 聲 明 放 在 「 一 般 模 塊 」 底 下 , 應(yīng) 將 Private 保 留 字 去 掉 。
2. 程 序 范 例 :
'自 定 義 過 程 PlaySound
Sub PlaySound(filename)
Dim cmd As String
Call mciSendString("close MyWav", 0, 0, 0) ' MyWav 這 個 名 稱 可 依 需 要 來 修 改
cmd = "open " & filename & " type WAVEAudio alias MyWav"
Call mciSendString(cmd, 0, 0, 0)
Call mciSendString("play MyWav", 0, 0, 0)
End Sub
' 假 設(shè) 要 播 放 "c:\windows\Tada.wav"
PlaySound "c:\windows\Tada.wav"
在 表 單 上 布 置 一 個 Timer 控 制 文 件 、 將
Interval 屬 性 設(shè) 定 成 100(表 示 0.1 秒 ), 然 后 撰 寫
Timer1_Timer 事 件 程 序 , 如 下 :
Private Sub Timer1_Timer()
Dim retStr As String * 80
Call mciSendString("status MyWav mode", retStr, 80, 0)
If Left(retStr, 7) = "stopped" Then ' 如 果 停 止 了
PlaySound "c:\windows\Tada.wav" ' 重 復(fù) 播 放
End If
End Sub
主 持 人 注 : 實 際 上 有 更 簡 單 的 方 法 , 只 要 使 用 API函 數(shù) mciSendCommand時 在 命 令 后 加 上 repeat就 可 以 實 現(xiàn) 遁 環(huán) 播 放 。 如
mciSendString "play mov notify repeat", 0, 0, hWnd
就 可 以 實 現(xiàn) 重 復(fù) 放 映 電 影 。
<END>
MMControl在 媒 體 文 件 播 放 完 畢 之 后 會 產(chǎn) 生 一 個 ONNotify事 件 , 你 可 以 把 重 播 的 代 碼 寫 到 該 事 件 中 。
<END>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -