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