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; 
 
}