www.pudn.com > ±ÏÒµÁôÄî²á.rar > WaveAudio.cpp
// WaveAudio.cpp: implementation of the CWaveAudio class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Browse.h"
#include "WaveAudio.h"
// WaveAudio.cpp: implementation of the CWaveAudio class.
//
//////////////////////////////////////////////////////////////////////
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CWaveAudio::CWaveAudio()
{
m_bRecording=FALSE;
m_bOpened=FALSE;
m_wDeviceID=0;
}
CWaveAudio::~CWaveAudio()
{
Close();
}
int CWaveAudio::GetDevices()
{
return m_wDeviceID;
}
BOOL CWaveAudio::Load(CString Filename)
{
Close();
MCI_OPEN_PARMS OpenParms;
OpenParms.lpstrDeviceType="waveaudio";
OpenParms.lpstrElementName=Filename;
if(mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_OPEN_TYPE,(DWORD)(LPVOID)&OpenParms))
return FALSE;
m_wDeviceID=OpenParms.wDeviceID ;
m_bOpened=TRUE;
return TRUE;
}
void CWaveAudio::Close()
{
m_bRecording=FALSE;
m_bOpened=FALSE;
if(m_wDeviceID)
{
mciSendCommand(m_wDeviceID,MCI_STOP,MCI_WAIT,NULL);
mciSendCommand(m_wDeviceID,MCI_CLOSE,NULL,NULL);
}
m_wDeviceID=0;
}
BOOL CWaveAudio::Play()
{
Stop();
MCI_PLAY_PARMS PlayParms;
mciSendCommand(m_wDeviceID,MCI_SEEK,MCI_SEEK_TO_START,NULL);
if(mciSendCommand(m_wDeviceID,MCI_PLAY,NULL,(DWORD)(LPVOID)&PlayParms))
return FALSE;
else
return TRUE;
}
void CWaveAudio::Stop()
{
mciSendCommand(m_wDeviceID,MCI_STOP,NULL,NULL);
}
BOOL CWaveAudio::Record()
{
Close();
MCI_OPEN_PARMS OpenParms;
OpenParms.lpstrDeviceType="waveaudio";
OpenParms.lpstrElementName="";
if(mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_OPEN_TYPE|MCI_WAIT,(DWORD)(LPVOID)&OpenParms))
return FALSE;
m_wDeviceID=OpenParms.wDeviceID;
MCI_RECORD_PARMS RecordParms;
if(mciSendCommand(m_wDeviceID,MCI_RECORD,NULL,(DWORD)(LPVOID)&RecordParms))
return FALSE;
m_bRecording=TRUE;
m_bOpened=TRUE;
return TRUE;
}
BOOL CWaveAudio::Save(CString Filename)
{
if(!m_bRecording)
return FALSE;
//Stop();
MCI_SAVE_PARMS SaveParms;
SaveParms.lpfilename=(LPCSTR)Filename;
if(mciSendCommand(m_wDeviceID,MCI_SAVE,MCI_SAVE_FILE|MCI_WAIT,(DWORD)(LPVOID)&SaveParms))
return FALSE;
m_bRecording=FALSE;
Load(Filename);
return TRUE;
}