⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.frm

📁 一个简易的MP3播放器。虽然界面不是很好
💻 FRM
📖 第 1 页 / 共 2 页
字号:
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   495
         Left            =   4320
         TabIndex        =   2
         Top             =   360
         Width           =   855
      End
      Begin VB.CommandButton bofang 
         Caption         =   "播放"
         BeginProperty Font 
            Name            =   "楷体_GB2312"
            Size            =   12
            Charset         =   134
            Weight          =   400
            Underline       =   0   'False
            Italic          =   0   'False
            Strikethrough   =   0   'False
         EndProperty
         Height          =   495
         Left            =   960
         TabIndex        =   1
         Top             =   360
         Width           =   855
      End
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private list2liebiao As Integer
Private anxiastop As Boolean
Private anguobofang As Boolean
Private danjilist1 As Boolean
Private danjilist2 As Boolean
Private removemusic As Integer
Private seeking As Integer
Private ActFrame As Long
Private yinliang As Integer
Private timer1can As Boolean

Private Sub bofang_Click()
Dim mp3str As String
Dim mpopen As Integer
mp3str = List2.List(0)
mpopen = Mp.Open(mp3str, "")
Mp.Play
anxiastop = False
anguobofang = True
ToToTime
mp3pinlv

End Sub

Private Sub Command1_Click()

Dim i As Integer
cd.ShowOpen
fn = cd.FileName
If fn <> "" Then bofang.Enabled = True
jingyibuchuliwenjianming
   
End Sub




Private Sub Command2_Click()
Unload Me
End Sub

Private Sub dakai_Click()

Dim i As Integer
cd.ShowOpen
fn = cd.FileName
If fn <> "" Then bofang.Enabled = True

jingyibuchuliwenjianming

End Sub

Private Sub Form_Load()
fenjiantoliebiao
With cd
   .FileName = ""
   .DialogTitle = "打开MP3文件"
   .Flags = &H200 Or &H80000 Or &H4
   .Filter = "MP3文件 (*.MP3)|*.mp3"
   '.CancelError = True
End With
Dim MP3Pass As String
MP3Pass = Mp.Authorize("LightBringer", "1441658209")



remove.Enabled = False
Sliyin.Value = -50
Sliyin_Change
Slibofangsudu.Value = 100
Slishengdaoo.Value = 0
Sliguocheng.Enabled = False
timer1can = True
If List1.ListCount = 0 Then
  bofang.Enabled = False
End If
kuaijin.Enabled = False
kuaitui.Enabled = False
shangyishou.Enabled = False
xiayishou.Enabled = False
tingzhi.Enabled = False
zanting.Enabled = False
End Sub
'////////
Private Sub chushihuaguocheng()

   rc = mixerOpen(hmixer, DEVICEID, 0, 0, 0)
  
   If ((MMSYSERR_NOERROR <> rc)) Then
       
       MsgBox "11不能打开混音器,声音动态显示条将不能显示" '///////判断是否有声卡
       Timer1.Enabled = False
       Pic1.Cls
       Pic2.Cls
       timer1can = False
       Exit Sub
   End If
      ' Get the output volume meter
   ok = GetControl(hmixer, MIXERLINE_COMPONENTTYPE_SRC_WAVEOUT, MIXERCONTROL_CONTROLTYPE_PEAKMETER, outputVolCtrl)
   
   If (ok = True) Then
      zuidayinliang = outputVolCtrl.lMaximum '///////////

   Else
      MsgBox "22不能打开混音器,声音动态显示条将不能显示"
       Timer1.Enabled = False
       Pic1.Cls
       Pic2.Cls
       timer1can = False


   End If
   
   ' Initialize mixercontrol structure
   mxcd.cbStruct = Len(mxcd)
   volHmem = GlobalAlloc(&H0, Len(volume))  ' Allocate a buffer for the volume value
   mxcd.paDetails = GlobalLock(volHmem)
   mxcd.cbDetails = Len(volume)
   mxcd.cChannels = 1
   Started = False

End Sub
Private Sub shishixianshiguocheng()
   If (zuidayinliang <> 0) Then
      mxcd.dwControlID = outputVolCtrl.dwControlID
      mxcd.item = outputVolCtrl.cMultipleItems
      rc = mixerGetControlDetails(hmixer, mxcd, MIXER_GETCONTROLDETAILSF_VALUE)
      CopyStructFromPtr volume, mxcd.paDetails, Len(volume)
   End If
   If (volume < 0) Then volume = -volume
End Sub


Private Sub Form_Unload(Cancel As Integer)
 GlobalFree volHmem '////退出时用
 liebiaotofenjian
End Sub


   '////////声卡


Private Sub kuaijin_Click()
Mp.Seek (seeking + 255) '---想不到会如此顺利

End Sub

Private Sub kuaitui_Click()
Mp.Seek (seeking - 255) '---想不到会如此顺利
End Sub

Private Sub List1_Click()

danjilist1 = True
remove.Enabled = True
removemusic = List1.ListIndex
End Sub

Private Sub List1_DblClick()
Dim mp3str As String
Dim mpopen As Integer

If anguobofang = True Then
  list2liebiao = List1.ListIndex - 1
  Mp.Stop
Else
  mp3str = List2.List(List1.ListIndex)
  mpopen = Mp.Open(mp3str, "")
  Mp.Play
  list2liebiao = List1.ListIndex - 1
  anguobofang = True
  ToToTime
  mp3pinlv
End If

anxiastop = False

End Sub

Private Sub List2_Click()
danjilist2 = True
remove.Enabled = True
removemusic = List2.ListIndex
'list2liebiao = List2.ListIndex
End Sub

Private Sub List2_DblClick()
Dim mp3str As String
Dim mpopen As Integer

If anguobofang = True Then
  list2liebiao = List2.ListIndex - 1
  Mp.Stop
Else
  mp3str = List2.List(List2.ListIndex)
  mpopen = Mp.Open(mp3str, "")
  Mp.Play
  list2liebiao = List2.ListIndex - 1
  anguobofang = True
  ToToTime
  mp3pinlv
End If

anxiastop = False

End Sub

Private Sub mp_ThreadEnded()
If anxiastop = False Then
list2liebiao = list2liebiao + 1
If list2liebiao = List2.ListCount Then list2liebiao = 0
Dim mp3str As String
Dim mpopen As Integer
mp3str = List2.List(list2liebiao)
mpopen = Mp.Open(mp3str, "")
Mp.Play
ToToTime
mp3pinlv
End If
Slibofangsudu_Change
Slishengdaoo_Change
Timer1.Enabled = False
Pic1.Cls
Pic2.Cls
End Sub
Private Sub remove_Click()
'If List1.ListCount = 0 Then remove.Enabled = False
If danjilist1 = True Or danjilist2 = True Then
   List1.RemoveItem removemusic
   List2.RemoveItem removemusic
   'List1.Selected(List1.ListIndex - 1) = True
End If
remove.Enabled = False

End Sub


Private Sub shangyishou_Click()
list2liebiao = list2liebiao - 2
If list2liebiao < 0 Then
   list2liebiao = List2.ListCount - 2
End If
Mp.Stop
End Sub



Private Sub Slibofangsudu_Change()
Dim pvel As Variant
Dim i As Integer
i = 200 - Slibofangsudu.Value
   pvel = Mp.SetSpeed(i)  '控制播放速度,值越大越慢100是比较正常的


End Sub





Private Sub Sliguocheng_Change()
  Dim i As Integer
  Dim j As Integer
  i = Sliguocheng.Value
  j = Text3.Text
  
  If i - j > 255 Or i - j < -255 Then
    Mp.Seek Sliguocheng.Value
    Text3.Text = Sliguocheng.Value
  End If
End Sub

Private Sub Slishengdaoo_Change()
Dim zuoshengdao As Integer
Dim youshengdao As Integer
Dim pvol As Integer
If Slishengdaoo.Value < 0 Then
   zuoshengdao = yinliang - Slishengdaoo.Value
   youshengdao = yinliang + Slishengdaoo.Value
ElseIf Slishengdaoo.Value > 0 Then
   zuoshengdao = yinliang - Slishengdaoo.Value
   youshengdao = yinliang + Slishengdaoo.Value
Else
   zuoshengdao = yinliang
   youshengdao = yinliang
End If

pvol = Form1.Mp.SetVolumeP(zuoshengdao, youshengdao) '////控制左右声道

End Sub


Private Sub Sliyin_Change()

yinliang = -Sliyin.Value
Dim pvol As Integer
pvol = Form1.Mp.SetVolumeP(yinliang, yinliang) '////控制音量0--120




End Sub


Private Sub Text1_Change()
If timer1can = True Then
chushihuaguocheng
Timer1.Enabled = True
End If



End Sub

Private Sub Text2_Change()
kuaijin.Enabled = True
kuaitui.Enabled = True
shangyishou.Enabled = True
xiayishou.Enabled = True
tingzhi.Enabled = True
zanting.Enabled = True
bofang.Enabled = False
End Sub

Private Sub Text3_Change()
Sliguocheng.Value = Text3.Text
Sliguocheng.Enabled = True
End Sub

Private Sub Text4_Change()
Sliguocheng.Min = 0
Sliguocheng.Max = Text4.Text
End Sub

Private Sub Timer1_Timer()

   On Error Resume Next
Pic1.Cls
Pic2.Cls
' i As Variant
   ' Get the current output level
   shishixianshiguocheng
'Dim liangdu As Double
'liangdu = Pic1.Height / zuidayinliang
'Pic1.Line (0, Pic1.Height)-(Pic1.Width, volume * liangdu * 2), RGB(0, 33, 123), BF

drawline Pic1
drawline Pic2

End Sub

Private Sub tingzhi_Click()
Mp.Stop
anxiastop = True
kuaijin.Enabled = False
kuaitui.Enabled = False
shangyishou.Enabled = False
xiayishou.Enabled = False
tingzhi.Enabled = False
zanting.Enabled = False
bofang.Enabled = True
End Sub

Private Sub xiayishou_Click()
Mp.Stop
End Sub

Private Sub zanting_Click()
Mp.Pause
If zanting.Caption = "暂停" Then
   zanting.Caption = "继续"
   Timer1.Enabled = False
   Pic1.Cls
   Pic2.Cls

   tingzhi.Enabled = False
   kuaijin.Enabled = False
   kuaitui.Enabled = False
   shangyishou.Enabled = False
   xiayishou.Enabled = False
   
Else
   zanting.Caption = "暂停"
   tingzhi.Enabled = True
   kuaijin.Enabled = True
   kuaitui.Enabled = True
   shangyishou.Enabled = True
   xiayishou.Enabled = True

End If


End Sub
'////text1最终显示的是动的时间
Private Sub Mp_ActFrame(ByVal ActFrame As Long) '---计算时间与进度条
   Dim AllSecGx As String
   Dim MinGx As String
   Dim SecGx As String
   Dim nLen
   seeking = ActFrame '---可以快进快退了
   
   AllSecGx = (ActFrame * Mp.MsPerFrame) \ 1000
   MinGx = str$(AllSecGx \ 60)
       
       If Len(MinGx) < 3 Then
          MinGx = "0" + Right(MinGx, 1)
       Else
          MinGx = Right(MinGx, 2)
       End If
   SecGx = str$(AllSecGx Mod 60)
         If Len(SecGx) < 3 Then
            SecGx = "0" + Right(SecGx, 1)
         Else
            SecGx = Right(SecGx, 2)
         End If
Text1 = "00:" + MinGx + ":" + SecGx
'////text1最终显示的是动的时间
   nLen = ActFrame / Mp.FrameCount '///不知什么用处
   Text3 = ActFrame '/// mp.FrameCount 歌曲总真数
   Text4 = Mp.FrameCount 'FrameCount///显示当前播放的总总真数
                 '////每秒播放的帧数 mp.MsPerFrame
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -