• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    一個簡單的MP3播放器

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 56次 | 進入軟件測試論壇討論

    領測軟件測試網 利用API函數[mciSendString]可以輕松實現MP3音樂文件的播放。下面這段程序實現了MP3播放的大部分常規操作,對其稍加修改,做一個100KB大小的MP3播放器輕而易舉

        啟動VB程序,在窗體上放置6個命令按鈕,三個標簽,一個公用對話框、一個進度條、一個狀態欄和一個計時器,窗本的布置請參考附圖

    按鈕"Open MP3 File"是用來打開對話框選擇MP3文件,其他5個按鈕分別為Play(播放)、Pause(暫停)、Stopplay(停止播放)、Back(向后跳躍)、Prew(向前跳躍)。Label1用來表示歌曲當前時間;label2放在時度條的最左邊,Caption屬性為"00:00";lable3放在時度條的右邊,用來表示歌曲總長。

       下面就可以編寫代碼了。首先在窗體的"通用聲明"部分聲明函數
        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個控制按鈕,其實是把字體設為"Webdings",讓它們的Caption屬性分別為"4" ";" "<" "7" "8"
    就可以了

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>