WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   sound in c++ (http://www.wcm.at/forum/showthread.php?t=37985)

Atomschwammerl 29.11.2001 21:06

sound in c++
 
Wie kann ich sounddatein in c++ aufrufen?
ich will eine passwortabfrage programmieren und wennst falsch eingibst soll der sound von HL "access denied" kommen
kann mir wer helfen?

Flink 07.12.2001 16:04

mit
 
Media Control Interface (MCI):
MCIERROR mciSendCommand( MCIDEVICEID IDDevice, UINT uMsg, DWORD fdwCommand, DWORD dwParam) und mciSendString:
MCI_OPEN Öffnet das Gerät
MCI_CLOSE Schließt das Gerät
MCI_PLAY Startet die Wiedergabe
MCI_STOP Beendet die Wiedergabe
MCI_SEEK Sucht eine bestimmte Position innerhalb der Datei
MCI_RECORD Beginnt mit der Aufnahme des Wellenformklangs
MCI_SAVE Speichert den aufgenommenen Klang auf dem Datenträger

oder
Microsoft Win32 application programming interface (API):

BOOL PlaySound( LPCSTR pszSound, HMODULE hmod,DWORD fdwSound
):
SND_SYNC Spielt den Klang synchron ab
SND_ASYNC Spielt den Klang asynchron ab
SND_NODEFAULT Blockiert die Verwendung von Standardklängen
SND_MEMORY Der erste Parameter verweist auf eine Speicherdatei
SND_LOOP Wiederholt das Abspielen des Klanges bis zum nächsten Aufruf von PlaySound
SND_NOSTOP Verhindert den Abbruch der Wiedergabe eines Klanges

Atomschwammerl 07.12.2001 20:09

wie sieht das dann im programm text aus?

kikakater 07.12.2001 23:46

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

Atomschwammerl 07.12.2001 23:56

thx
kikater


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag