// sound.h // #pragma once #include #include ///////////////////////////////////////////////////////////////////////////// #define MAXSOUND 100 #define MAXVOLUME 20 #define MAXBLUPI 100 class CSound { public: CSound(); ~CSound(); bool Create(HWND hWnd); void SetState(bool bState); bool GetEnable(); void SetAudioVolume(int volume); int GetAudioVolume(); void SetMidiVolume(int volume); int GetMidiVolume(); void CacheAll(); bool Cache(int channel, char *pFilename); void Flush(int channel); bool Play(int channel, int volume=0, int pan=0); bool PlayImage(int channel, POINT pos, int rank=-1); bool PlayMusic(HWND hWnd, LPSTR lpszMIDIFilename); bool RestartMusic(); void SuspendMusic(); void StopMusic(); bool IsPlayingMusic(); void AdaptVolumeMusic(); void SetSuspendSkip(int nb); protected: bool CreateSoundBuffer(int dwBuf, DWORD dwBufSize, DWORD dwFreq, DWORD dwBitsPerSample, DWORD dwBlkAlign, bool bStereo); bool ReadData(LPDIRECTSOUNDBUFFER lpDSB, FILE* pFile, DWORD dwSize, DWORD dwPos); bool CreateBufferFromWaveFile(int dwBuf, char *pFileName); bool StopAllSounds(); bool PlaySoundDS(DWORD dwSound, DWORD dwFlags); protected: HWND m_hWnd; bool m_bEnable; bool m_bState; LPDIRECTSOUND m_lpDS; LPDIRECTSOUNDBUFFER m_lpDSB[MAXSOUND]; short m_channelBlupi[MAXBLUPI]; UINT m_MidiDeviceID; char m_MIDIFilename[50]; int m_audioVolume; int m_midiVolume; int m_lastMidiVolume; int m_nbSuspendSkip; }; /////////////////////////////////////////////////////////////////////////////