www.pudn.com > GameEngine_src.rar > CEasyAudio.h


// CEasyAudio.h: interface for the CEasyAudio class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#ifndef CEasyAudio_h 
#define CEasyAudio_h 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
 
#include  
#include  
#include "CList.h" 
 
/////////////////////////////////////////////////////////////////////////////// 
//声音类,负责载入WAV文件,并播放 
/////////////////////////////////////////////////////////////////////////////// 
class CEasySound 
{ 
 
public: 
	CEasySound(); 
	~CEasySound(); 
 
	bool Init(); 
	void Free(); 
 
	bool LoadWAV( char *filename, int numBuffer = 1 ); 
	bool LoadWAVFromMemory( char *pData, int numBuffer = 1 ); 
 
	void Play(); 
	void Stop(); 
 
	void SetVolume( long volume ); 
 
	int GetCurPos(); 
	 
protected: 
	bool FillBuffer( LPDIRECTSOUNDBUFFER buf ); 
 
protected: 
	LPDIRECTSOUNDBUFFER	* m_pDSBuffer;		//声音缓冲数组 
	int				m_NumBuffer;			//缓冲个数 
	unsigned char *	m_pData;				//声音数据 
	unsigned long	m_DataSize;				//数据大小 
}; 
 
 
/////////////////////////////////////////////////////////////////////// 
//音效类,初始化,释放并管理DSOUND.管理音效和音乐 
/////////////////////////////////////////////////////////////////////// 
class CEasyAudio   
{ 
 
public: 
	CEasyAudio(); 
	~CEasyAudio(); 
 
	bool Init( HWND hwnd ); 
	void Free(); 
 
	CEasySound *CreateSoundBuffer( char *file, bool isFromFile = true, int numBuffer = 1 ); 
	void DeleteSoundBuffer( CEasySound *pSB ); 
 
	void ChangeSoundVolume( int changeValume ); 
	long GetSoundVolume() { return m_SoundVolume; } 
 
	void ChangeMusicVolume( int changeValume ); 
	long GetMusicVolume() { return m_MusicVolume; } 
 
	LPDIRECTSOUND8 GetLPDS() { return m_pDS; } 
 
	bool PlayMP3( char *filename ); 
	void UpdateMP3(); 
	void SetMusicInterval( DWORD v ) { m_interval = v; } 
 
private: 
	LPDIRECTSOUND8		m_pDS;				//DirectSound8指针 
	CList	m_SoundList;		//声音对象列表 
	long				m_SoundVolume;		//声音音量 
	long				m_MusicVolume;		//音乐音量 
	IGraphBuilder	*	m_pGraph; 
    IMediaControl	*	m_pControl; 
	IMediaPosition	*	m_pPosition;		//音乐播放位置 
	DWORD				m_interval;			//背景音乐重放间隔时间 
	DWORD				m_LastTick; 
}; 
 
 
 
 
typedef CEasyAudio * PEASYAUDIO; 
typedef CEasySound * PEASYSOUND; 
 
 
 
///////////////////////////////////////////////////////////////////////////// 
//初始化,释放EasyAudio 
///////////////////////////////////////////////////////////////////////////// 
PEASYAUDIO InitEasyAudio( HWND hwnd ); 
void FreeEasyAudio(); 
 
 
#endif