Option Explicit

Private Sub cmdOpenFIle_Click()

    On Error GoTo MyErr

    With CommonDialog1
        .DialogTitle = "サウンドファイルを選択"
        .InitDir = App.Path
        .Filter = "サウンドファイル(mp3,wav,wma,midi)|*.mp3;*.wav;*.wma;midi;*.gif;|すべてのファイル|*.*"
        .FilterIndex = 1
        .MaxFileSize = 1024
        .ShowOpen
        If .FileName <> "" And Dir(.FileName) <> "" Then
            txtFilePath = .FileName
            SetEnabledButton True
        End If
    End With
      
    GoTo MyEnd

MyErr:
    MsgBox "エラー発生!" & vbCrLf & Err.Number & " " & Err.Description
MyEnd:
    On Error GoTo 0
    
End Sub

Private Sub cmdPlay_Click() ' 開始
    OpenSound txtFilePath, SOUND_ALIAS
    PlaySound SOUND_ALIAS
    With HSPosition
        .Max = GetSoundLength(SOUND_ALIAS)
        .Min = 0
        .Value = 0
        .LargeChange = .Max / 10
        .SmallChange = .Max / 100
    End With
    SetSoundVolume SOUND_ALIAS, GetSoundVolume(SOUND_ALIAS) / 2
    lblVolume.Caption = GetSoundVolume(SOUND_ALIAS)
    Timer1.Enabled = True
    SetEnabledButton False, True, True
End Sub

Private Sub cmdStop_Click() ' 停止
    StopSound SOUND_ALIAS
    CloseSound SOUND_ALIAS
    SetEnabledButton True
    Timer1.Enabled = False
End Sub

Private Sub cmdPause_Click() ' 一時停止
    PauseSound SOUND_ALIAS
    SetEnabledButton False, True, False, True
End Sub

Private Sub cmdResume_Click() ' 再開
    ResumeSound SOUND_ALIAS
    SetEnabledButton False, True, True, False
End Sub


Private Sub cmdVol_Click(Index As Integer)  '音量
    Dim Vol As Double
    
    Vol = GetSoundVolume(SOUND_ALIAS)
    Vol = Vol + 50 * (-1) ^ Index
    If Vol < 0 Then Vol = 0
    If Vol > 1000 Then Vol = 1000
    SetSoundVolume SOUND_ALIAS, Vol
    lblVolume.Caption = GetSoundVolume(SOUND_ALIAS)
End Sub

Private Sub Form_Load()
    SetEnabledButton False
End Sub

Private Sub SetEnabledButton(blPlay As Boolean, _
                    Optional blStop As Boolean = False, _
                    Optional blPause As Boolean = False, _
                    Optional blResume As Boolean = False)
'
' コマンドボタンの有効/無効
'
    cmdPlay.Enabled = blPlay
    cmdStop.Enabled = blStop
    cmdPause.Enabled = blPause
    cmdResume.Enabled = blResume
End Sub


Private Sub Form_Unload(Cancel As Integer)
    StopSound "all"
    CloseSound "all"
End Sub

Private Sub HSPosition_Change()
    SetSoundPosition SOUND_ALIAS, HSPosition.Value
End Sub

Private Sub Timer1_Timer()
    HSPosition.Value = GetSoundPosition(SOUND_ALIAS)
    If HSPosition.Value = HSPosition.Max Then cmdStop_Click
End Sub