|
Tipp 0193
|
Sound-Dateien laden, abspielen, wiederholen
|
|
|
Autor/Einsender: Datum: |
|
Alexander Csadek 27.01.2002 |
|
Entwicklungsumgebung:
DirectX-Version: |
|
VB 6
DirectX 7 |
|
|
Mit diesem Beispiel können Sound (z.B. WAV-Dateien geladen und abgespielt werden. Dazu gibt es zwei Möglichkeiten, ein einmaliger Durchlauf bis zum Ende des Sounds oder ein wiederholtes Abspielen
(loop).
|
Zu diesem Tipp finden Sie eine ausführliche Beschreibung in unserer DirectX-Rubrik zu
DirectSound unter Sound laden und abspielen.
|
Der abgebildete Code bezieht sich nur auf die eigentliche Funktion. Da der Code für die Initialisierung von
DirectX meist immer gleich bleibt, wurde dieser hier nicht gesondert abgebildet.
|
|
|
Option Explicit
Dim DX As New DirectX7
Dim DS As DirectSound
Dim dsWavDatei As DirectSoundBuffer
Private Sub Form_Load()
On Local Error GoTo ErrorHandler
Set DS = DX.DirectSoundCreate("")
DS.SetCooperativeLevel Me.hWnd, DSSCL_NORMAL
Me.Show
Exit Sub
ErrorHandler:
MsgBox "DirectSound-Objekt konnte nicht initialisiert " & _
"werden." & vbCrLf & "Prüfe, ob eine Soundkarte " & _
"installiert ist und ob sie funktioniert." & vbCr & _
Err.Number & "/" & Err.Description
End
End Sub
Private Sub cmd_Load_Click()
Dim dsBDesc As DSBUFFERDESC
Dim s As WAVEFORMATEX
On Error GoTo ErrorHandler
With dsBDesc
.lFlags = DSBCAPS_STATIC
End With
Set dsWavDatei = DS.CreateSoundBufferFromFile _
(App.Path & "\Sound.wav", dsBDesc, s)
cmd_Load.Enabled = False
cmd_Play.Enabled = True
Timer1.Enabled = True
Exit Sub
ErrorHandler:
MsgBox "Fehler beim Laden der Wav-Datei." & vbCr & _
Err.Number & "/" & Err.Description
End
End Sub
Private Sub cmd_Play_Click()
If chk_Loop.Value = 0 Then
dsWavDatei.Play DSBPLAY_DEFAULT
Else
dsWavDatei.Play DSBPLAY_LOOPING
End If
cmd_Play.Enabled = False
chk_Loop.Enabled = False
End Sub
Private Sub cmd_Stop_Click()
dsWavDatei.Stop
dsWavDatei.SetCurrentPosition 0
cmd_Play.Enabled = True
chk_Loop.Enabled = True
End Sub
Private Sub cmd_Close_Click()
Set dsWavDatei = Nothing
Set DS = Nothing
Set DX = Nothing
End
End Sub
Private Sub Timer1_Timer()
Dim dsc As DSCURSORS
dsWavDatei.GetCurrentPosition dsc
If dsc.lPlay > 0 Then
cmd_Stop.Enabled = True
Else
cmd_Stop.Enabled = False
cmd_Play.Enabled = True
chk_Loop.Enabled = True
End If
End Sub
|
|
|
|
|
|
Um dieses Beispiel ausführen zu können, wird die DirectX 7
for Visual Basic Type Library
benötigt (siehe dazu die Erläuterungen in der DirectX-Rubrik).
|
|
Windows-Version |
95 |
|
|
98/SE |
|
|
ME |
|
|
NT |
|
|
2000 |
|
|
XP |
|
|
Vista |
|
|
Win
7 |
|
|
|
VB-Version |
VBA 5 |
|
|
VBA 6 |
|
|
VB 4/16 |
|
|
VB 4/32 |
|
|
VB 5 |
|
|
VB 6 |
|
|
|
|
Download (36
kB)
|
Downloads bisher: [ 4176 ]
|
|
|