vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück
Rubrik: Multimedia & Sound · Audio   |   VB-Versionen: VB4, VB5, VB627.07.01
WAVE-Dateien aus der Ressoucen-Datei abspielen

Dieses Beispiel zeigt, wie man eine in einer Ressourcen-Datei eingebundene WAVE-Datei abspielen kann.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  17.499 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Sicherlich kennen Sie Ressourcen-Dateien. In einer solchen Datei lassen sich u.a. Texte, Icons, Bitmaps und auch WAVE-Dateien speichern. Eine Ressourcen-Datei wird direkt ins Projekt eingebunden und befindet sich dann beim Erstellen der EXE-Datei mit in der ausführbaren Anwendung. Der Vorteil, Texte, Icons oder auch WAVE-Dateien in einer Ressourcen-Datei zu speichern - anstelle diese Daten als externe eigene Dateien zu verwenden - besteht vor allen Dingen darin, daß Sie quasi mit einer einzigen Anweisung auf die enthaltenen Ressourcen zugreifen können.

Handelt es sich um Texte oder Bilder so verwenden Sie die VB-Funktion LoadResString bzw. LoadResPicture. Was aber, wenn es sich um eine WAVE-Datei zum Abspielen eines Sounds handelt? Hierfür gibt es die LoadResData-Funktion. Man übergibt der Funktion die entsprechende Ressourcen-Kennung (ID) und das Format, und erhält als Rückgabewert ein Byte-Array.

Wie spielt man nun aber den Sound ab? Man hat ja nur ein Bytefeld - und die WinAPI-Funktion sndPlaySound erwartet doch (so denkt man zumindest) einen Dateinamen. Weit gefehlt! Deklariert man den ersten Parameter der API-Funktion als As Any, so kann der API-Funktion auch ein Byte-Datenfeld übergeben werden. Wichtig ist dann nur, daß uFlags (2. Parameter der API-Funktion) mit der Konstante SND_MEMORY verORt wird.

Und hier die fertige Funktion

' zunächst die benötigten API-Deklarationen
Private Declare Function sndPlaySound Lib "winmm" _
  Alias "sndPlaySoundA" ( _
  lpszSoundName As Any, _
  ByVal uFlags As Long) As Long
 
Private Const SND_SYNC = &H0
Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2
Private Const SND_MEMORY = &H4
 
' WAVE aus Ressource-Datei abspielen
Public Sub WaveFromRes(ByVal ResID As Long)
  Dim bWave() As Byte
  Dim uFlags As Long
 
  bWave = LoadResData(ResID, "WAVE")
  uFlags = SND_NODEFAULT Or SND_ASYNC Or SND_MEMORY
  Call sndPlaySound(bWave(0), uFlags)
End Sub

Innerhalb der Ressourcen-Datei muss dann die WAVE-Datei folgendermaßen eingebunden werden
(die erste Zahl entspricht der ResID und muss eindeutig sein, im nachfolgenden Beispiel wurde die ID = 1000 gewählt):

1000 WAVE DISCARDABLE "test.wav"

Im Programm erfolgt das Abspielen dann so:

WaveFromRes 1000

Einschränkung
Es lassen sich nicht beliebig große WAVE-Dateien in einer Ressourcen-Datei speichern. Die von LoadResData aus der Ressourcedatei geladenen Daten können maximal 64 KB umfassen!
 

Dieser Tipp wurde bereits 17.499 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2019 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel