Option Strict Off
Option Explicit On
Friend Class Form1
        Inherits System.Windows.Forms.Form
        
        Private Sub cmdOpenFIle_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdOpenFIle.Click

        Dim Ofd As New OpenFileDialog() 'ファイルダイアログ

        With Ofd
            .Title = "サウンドファイルを選択"
            .InitialDirectory = My.Application.Info.DirectoryPath
            .Filter = "サウンドファイル(mp3,wav,wma,midi)|*.mp3;*.wav;*.wma;midi;*.gif;|すべてのファイル|*.*"
            .FilterIndex = 1

            If .ShowDialog() = DialogResult.OK Then
                If Dir(.FileName) <> "" Then
                    If .FileName <> "" And Dir(.FileName) <> "" Then
                        txtFilePath.Text = .FileName
                        SetEnabledButton(True)
                    End If
                End If
            End If

        End With
    End Sub
        
        Private Sub cmdPlay_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdPlay.Click
                Dim NewLargeChange As Short ' 開始
                OpenSound(txtFilePath.Text, SOUND_ALIAS)
                PlaySound(SOUND_ALIAS)
                With HSPosition
                        .Maximum = (GetSoundLength(SOUND_ALIAS) + .LargeChange - 1)
                        .Minimum = 0
                        .Value = 0
                        NewLargeChange = (.Maximum - .LargeChange + 1) / 10
                        .Maximum = .Maximum + NewLargeChange - .LargeChange
                        .LargeChange = NewLargeChange
                        .SmallChange = (.Maximum - .LargeChange + 1) / 100
                End With
                SetSoundVolume(SOUND_ALIAS, GetSoundVolume(SOUND_ALIAS) / 2)
                lblVolume.Text = CStr(GetSoundVolume(SOUND_ALIAS))
                Timer1.Enabled = True
                SetEnabledButton(False, True, True)
        End Sub
        
        Private Sub cmdStop_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdStop.Click ' 停止
                StopSound(SOUND_ALIAS)
                CloseSound(SOUND_ALIAS)
                SetEnabledButton(True)
                Timer1.Enabled = False
        End Sub
        
        Private Sub cmdPause_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdPause.Click ' 一時停止
                PauseSound(SOUND_ALIAS)
                SetEnabledButton(False, True, False, True)
        End Sub
        
        Private Sub cmdResume_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdResume.Click ' 再開
                ResumeSound(SOUND_ALIAS)
                SetEnabledButton(False, True, True, False)
        End Sub
        
        
        Private Sub cmdVol_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdVol.Click
                Dim Index As Short = cmdVol.GetIndex(eventSender) '音量
                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.Text = CStr(GetSoundVolume(SOUND_ALIAS))
        End Sub
        
        Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
                SetEnabledButton(False)
        End Sub
        
        Private Sub SetEnabledButton(ByRef blPlay As Boolean, Optional ByRef blStop As Boolean = False, Optional ByRef blPause As Boolean = False, Optional ByRef blResume As Boolean = False)
                '
                ' コマンドボタンの有効/無効
                '
                cmdPlay.Enabled = blPlay
                cmdStop.Enabled = blStop
                cmdPause.Enabled = blPause
                cmdResume.Enabled = blResume
        End Sub
        
        
        Private Sub Form1_FormClosed(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
                StopSound("all")
                CloseSound("all")
        End Sub
        
    Private Sub HSPosition_Change(ByVal newScrollValue As Integer)
        SetSoundPosition(SOUND_ALIAS, (newScrollValue))
    End Sub
        
        Private Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick
                HSPosition.Value = GetSoundPosition(SOUND_ALIAS)
                If HSPosition.Value = (HSPosition.Maximum - HSPosition.LargeChange + 1) Then cmdStop_Click(cmdStop, New System.EventArgs())
        End Sub
        Private Sub HSPosition_Scroll(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.ScrollEventArgs) Handles HSPosition.Scroll
                Select Case eventArgs.type
                        Case System.Windows.Forms.ScrollEventType.EndScroll
                                HSPosition_Change(eventArgs.newValue)
                End Select
        End Sub
End Class