国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

分享——一個簡單的MP3播放器的制作

2019-11-18 12:00:43
字體:
來源:轉載
供稿:網友

  利用API函數[mciSendString]可以輕松實現mp3音樂文件的播放。下面這段程序實現了MP3播放的大部分常規操作,對其稍加修改,做一個100KB大小的MP3播放器輕而易舉
  啟動VB程序,在窗體上放置6個命令按鈕,三個標簽,一個公用對話框、一個進度條、一個狀態欄和一個計時器,窗本的布置請參考附圖
  
  按鈕"Open MP3 File"是用來打開對話框選擇MP3文件,其他5個按鈕分別為Play(播放)、Pause(暫停)、Stopplay(停止播放)、Back(向后跳躍)、  
  下面就可以編寫代碼了。首先在窗體的"通用聲明"部分聲明函數
  Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA"(Byval lpstrCommand As String,ByVal lpstrRetumString As String,ByVal uReturnLength As long,ByVal hwndCallback as long) As long
  
  Dim mfn As String
  
  下面就是各個對象的代碼了:
  Private Sub Form_load()
  mfn=""
  play.Enabled=False
  pause.Enabled=False
  Stopplay.Enabled=False
  back.Enabled=False
  prew.Enabled=False
  Timer1.Enabled=False
  Timer1.Interval=500
  End Sub
  
  Private Sub open_Click()
  On Error Goto err
  With CommonDialog1
  .CancelError=True
  .Filter="音樂文件*.mp3;*.wav;*.mid"
  .Flags=cdlOFNNoChangeDir And cdlOFNPathMustExist
  .Action=1
  stopplay_Click '停止按鈕同時可以設備初始化
  mfn=.FileName '這個程序中文件名一定不能帶空格
  Form1.Caption=.FileName
  play.Enabled=True
  End With
  play_Click
  Exit Sub
  err:
  End Sub
  
  Private Sub play_Click()
  On Error Resume Next
  Dim t As Long
  t=mciSendString("open " + mfn,0&,0,0) 'Open后邊的空格一定不能丟
  Dim ret As String * 128
  t=mciSendString("status " + mfn + " length",ret,128,0)
  '顯示歌曲總長
  ret=Left(ret,8)
  If ret<>"" Then
  ProgressBar1.Min=0
  ProgressBar1.Max=Val(ret)
  Label3.Caption=gettime(Val(ret))
  End If
  play.Enabled=False
  pause.Enabled=True
  stopplay.Enabled=True
  back.Enabled=True
  prew.Enabled=True
  t=mciSendString("status " + mfn +" mode",ret,128,0)
  '得到設備的當前狀態,是播放還是暫停等等
  ret=Left(ret,8)
  StatusBar1.Panels(1).text=ret
  '在狀態欄顯示播放狀態
  t=mciSendString("play " + mfn + " form " + Str(ProgressBar1.Value),0&,0,0)
  '開始播放
  Timer1.Enabled=True
  End Sub
  
  Private Sub pause_Click()
  t%=mciSendString("pause " + mfn,0&,0,0)
  '發出暫停的命令
  play.Enable=True
  pause.Enabled=False
  stopplay.Enabled=True
  back.Enabled=False
  prew.Enabled=False
  End Sub
  
  Private Sub stopplay_Click()
  t%=mciSendString("stop " + mfn,0&,0,0)
  t%=mciSendString("close " + mfn,0&,0,0)
  '停止播放
  play.Enabled=True
  pause.Enabled=False
  stopplay.Enabled=False
  back.Enabled=False
  prew.Enabled=False
  End Sub
  
  Private Sub back_Click()
  t%=mciSendString("play " + mfn + " from " + Str(ProgressBar1.Value-(ProgressBar1.Max/10)),0&,0,0) '向后跳一小段再播放
  End Sub
  
  Private Sub prew_Click()
  t%=mciSendString("play " + mfn + " from " + Stri(ProgressBar1.Value+(ProgressBar1.Max/10)),0&,0,0) '向前跳一小段再播放
  End Sub
  
  Private Sub Timer1_Timer()
  Dim t As Long
  Dim ret As String * 128
  t=mciSendString("status " + mfn + " position",ret,0,0)
  '得到當前播放位置
  ret=left(ret,8)
  ProgressBar1.Value=Val(ret)
  Label1.Caption=gettime(Val(ret))
  '顯示歌曲當前時間
  If ProgressBar1.Value=ProgressBar1.Max Then
  stopplay_Click
  End If
  t=mciSendString("status " + mfn + " mode",ret,128,0)
  ret=Left(ret,8)
  StatusBar1.Panels(1).Text=ret
  End Sub
  
  Private Sub Form_Unload(Cacel As Integer)
  t%=mciSendString("stop " + mfn,0&,0,0)
  t%=mciSendString("close " + mfn,0&,0,0)
  End Sub
  
  Private Function Gettime(position As Long) As String
  '這個函數的功能是把以長整型表示的時間轉換為電子鐘式的"**:**"
  Dim min,sec
  min=position/1000
  min=min/60
  sec=min-Int(min)
  min=Int(min)
  sec=60 * sec / 100
  sec=Int(sec * 100)
  gettime=Str(min) + ":" + Str(sec)
  End Function
  
  圖中5個控制按鈕,其實是把
  就可以了

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 龙井市| 石狮市| 海晏县| 汾阳市| 上杭县| 句容市| 遂溪县| 静海县| 文水县| 奉贤区| 双牌县| 荔浦县| 保山市| 洛扎县| 班戈县| 淳化县| 巴中市| 黔西县| 泰来县| 康定县| 高邑县| 苏尼特左旗| 荣成市| 高雄县| 常州市| 辽宁省| 拜泉县| 山西省| 鄂州市| 博罗县| 福鼎市| 松潘县| 岑溪市| 昌都县| 水城县| 贵港市| 东乡县| 延边| 阜南县| 永清县| 嘉祥县|