www.pudn.com > 2007112823521925.rar > AUDIO.CPP


#include "stdafx.h" 
#include "Audio.h" 
#include "GtMpeg.h" 
////////////////////////////// 
// 
////////////////////////////// 
CAudio::CAudio() 
{ 
	m_bOpened = m_bPaused = m_bPlaying = FALSE; 
	m_wDeviceID = 0; 
} 
CAudio::~CAudio() 
{ 
} 
////////////////////////////// 
// 
////////////////////////////// 
BOOL CAudio::InitAudio(CString sWavFile) 
{ 
  CFileFind FileFind; 
  if(!FileFind.FindFile(sWavFile)) 
	  return FALSE; 
  m_OpenParms.lpstrDeviceType="waveaudio"; 
  m_OpenParms.lpstrElementName=sWavFile.GetBuffer(0); 
  sWavFile.ReleaseBuffer(); 
  if(mciSendCommand(0,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_OPEN_TYPE,(DWORD)(LPVOID)&m_OpenParms)) 
     return FALSE; 
  m_wDeviceID = m_OpenParms.wDeviceID; 
  MCI_STATUS_PARMS mciStatus; 
  mciStatus.dwItem=MCI_WAVE_STATUS_SAMPLESPERSEC; 
  if(mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_WAIT|MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatus)) 
  { 
      Close(); 
	  return FALSE; 
  } 
  m_SampleRate=mciStatus.dwReturn; 
  m_bOpened = TRUE; 
  return TRUE; 
} 
////////////////////////////// 
// 
////////////////////////////// 
BOOL CAudio::Play() 
{ 
   MCI_PLAY_PARMS  PlayParms; 
   mciSendCommand(m_wDeviceID,MCI_SEEK,MCI_SEEK_TO_START,NULL);  
   if(mciSendCommand(m_wDeviceID,MCI_PLAY,MCI_NOTIFY,(DWORD)(LPVOID)&PlayParms)) 
	   return FALSE; 
   m_bPlaying=TRUE; 
   return TRUE; 
} 
////////////////////////////// 
// 
////////////////////////////// 
void CAudio::Pause() 
{ 
	if (m_bOpened && m_bPlaying) 
	{ 
		MCI_PLAY_PARMS PauseParms; 
		if (mciSendCommand (m_wDeviceID, MCI_PAUSE, 0, (DWORD)(LPVOID) &PauseParms)) 
			return; 
		m_bPaused = TRUE; 
	} 
} 
////////////////////////////// 
// 
////////////////////////////// 
void CAudio::Stop() 
{ 
	if (m_bOpened && m_bPlaying) 
	{ 
		mciSendCommand (m_wDeviceID, MCI_STOP, NULL, NULL); 
		mciSendCommand (m_wDeviceID, MCI_SEEK, MCI_SEEK_TO_START, NULL); 
		m_bPlaying = FALSE; 
		m_bPaused = FALSE; 
	} 
} 
////////////////////////////////////////////////////////////////////// 
// 
////////////////////////////////////////////////////////////////////// 
void CAudio::Close() 
{ 
	if (m_bOpened) 
	{ 
		if (m_bPlaying || m_bPaused) 
			mciSendCommand (m_wDeviceID, MCI_STOP, NULL, NULL); 
		mciSendCommand (m_wDeviceID, MCI_CLOSE, NULL, NULL); 
		m_bOpened = m_bPaused = m_bPlaying = FALSE; 
		m_wDeviceID = 0; 
	} 
} 
////////////////////////////////////////////////////////////////////// 
// 
////////////////////////////////////////////////////////////////////// 
BOOL  CAudio::IsPlaying() 
{ 
    if(m_bOpened) 
	{ 
	  MCI_STATUS_PARMS StatusParms; 
      StatusParms.dwItem=MCI_STATUS_MODE; 
	  if(mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_WAIT|MCI_STATUS_ITEM,(DWORD)(LPVOID)&StatusParms)) 
		  return FALSE; 
	  if(StatusParms.dwReturn==MCI_MODE_PLAY||StatusParms.dwReturn==MCI_MODE_PAUSE) 
		  return TRUE; 
	} 
    return FALSE; 
}