Thema: sound in c++
Einzelnen Beitrag anzeigen
Alt 07.12.2001, 23:46   #4
kikakater
Inventar
 
Registriert seit: 24.01.2001
Beiträge: 5.631


Standard

C bzw. C++ Programm, Beispiel wie man ein MCI Gerät bzw. in diesem Fall eine Wave Datei öffnet, abspielt, schliesst, es wurde hier keine Fehlerabfrage programmiert, außerdem muß dem Linker die Importlibrary als Datei winmm.lib angegeben werden, sonst findet das Betriebssystem die Funktion mciSendCommand nicht.

c++ datei ... z.b. main.cpp bzw. fensterfunktionsdatei.cpp ... window_proc ... open_device.cpp

--- Anfang der Einfügungen in open_device.cpp

... gleich nach #include <windows.h> folgende Zeilen einfügen:

--- Anfang der einzufügenden Zeilen
Code:
#include <mmsystem.h>

 MCI_OPEN_PARMS mciOpenParameters; // respektive in einer weiteren Includedatei
--- Ende der einzufügenden Zeilen


... Open Device Aufruf z.B. bei case WM_CREATE: der Fensterfunktion WndProc einfügen:

also:

case WM_CREATE:

--- Anfang der einzufügenden Zeilen

Code:
 mciOpenParameters.lpstrDeviceType= (LPCSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;
 mciOpenParameters.lpstrElementName= "C:\\WINDOWS\\CHORD.WAV";

 ulrc = // ulrc ... ULONG ReturnCode
  mciSendCommand(0,
  MCI_OPEN,
  MCI_WAIT | MCI_OPEN_ELEMENT | MCI_OPEN_TYPE | MCI_OPEN_TYPE_ID,
  (ULONG)&mciOpenParameters);
--- Ende der einzufügenden Zeilen

und:

case WM_DESTROY:

--- Anfang der einzufügenden Zeilen

Code:
 ulrc = // ulrc ... ULONG ReturnCode
  mciSendCommand(mciOpenParameters.wDeviceID,
  MCI_CLOSE,
  MCI_WAIT,
  (ULONG)&mciOpenParameters);
--- Ende der einzufügenden Zeilen

--- Ende der Einfügungen in open_device.cpp

************************************************** ******************

--- Anfang der Einfügungen in play_device.cpp

--- Anfang der einzufügenden Zeilen

Code:
#include <mmsystem.h>

 extern MCI_OPEN_PARMS mciOpenParameters; // wurde in open_device.cpp bereits definiert, deswegen hier der Zusatz extern
 MCI_PLAY_PARMS mciPlayParameters; // hier global, sonst z.B. in einer Funktion definieren
--- Ende der einzufügenden Zeilen


--- Anfang der einzufügenden Zeilen

Code:
case WM_USER_PLAY_WAVE: // WM_USER_PLAY_WAVE muß der Programmierer letztlich festlegen über #define WM_USER_PLAY_WAVE (WM_USER + 1) z.B.

 mciSendCommand(mciOpenParameters.wDeviceID, MCI_PLAY, MCI_WAIT, (ULONG)&mciPlayParameters);
--- Ende der einzufügenden Zeilen

--- Ende der Einfügungen in play_device.cpp

mfg Kikakater
kikakater ist offline   Mit Zitat antworten