///////////////////////////////////////////////////////////////////////////// // Copyright (C) 1998 by Jörg König // All rights reserved // // This file is part of the completely free tetris clone "CGTetris". // // This is free software. // You may redistribute it by any means providing it is not sold for profit // without the authors written consent. // // No warrantee of any kind, expressed or implied, is included with this // software; use at your own risk, responsibility for damages (if any) to // anyone resulting from the use of this software rests entirely with the // user. // // Send bug reports, bug fixes, enhancements, requests, flames, etc., and // I'll try to keep a version up to date. I can be reached as follows: // J.Koenig@adg.de (company site) // Joerg.Koenig@rhein-neckar.de (private site) ///////////////////////////////////////////////////////////////////////////// // DirectSound.h: interface for the CDirectSound class. // ////////////////////////////////////////////////////////////////////// #ifndef D_SOUND_HEAD_FILE #define D_SOUND_HEAD_FILE #if !defined(AFX_DIRECTSOUND_H__A20FE86F_118F_11D2_9AB3_0060B0CDC13E__INCLUDED_) #define AFX_DIRECTSOUND_H__A20FE86F_118F_11D2_9AB3_0060B0CDC13E__INCLUDED_ #if _MSC_VER >= 1000 #pragma once #endif // _MSC_VER >= 1000 #include #include //#pragma message("linking with Microsoft's DirectSound library ...") #pragma comment(lib, "dsound.lib") class CDirectSound { public: // construction/destruction CDirectSound(); virtual ~CDirectSound(); // If the "pWnd" paramter is NULL, then AfxGetApp()->GetMainWnd() will be used. BOOL Create(LPCTSTR pszResource, CWnd * pWnd = 0); BOOL Create(UINT uResourceID, CWnd * pWnd = 0) { return Create(MAKEINTRESOURCE(uResourceID), pWnd); } // Alternativly you can specify the sound by yourself // Note that the class does not copy the entire data ! Instead // a pointer to the given data will be stored ! // You can load an entire WAV file into memory and then call this // Create() method. BOOL Create(LPVOID pSoundData, CWnd * pWnd = 0); public: // operations BOOL IsValid() const; void Play(DWORD dwStartPosition = 0, BOOL bLoop = FALSE); void Stop(); void Pause(); void Continue(); CDirectSound & EnableSound(BOOL bEnable = TRUE) { m_bEnabled = bEnable; if( ! bEnable ) Stop(); return * this; } BOOL IsEnabled() const { return m_bEnabled; } protected: // implementation BOOL SetSoundData(LPVOID pSoundData, DWORD dwSoundSize); BOOL CreateSoundBuffer(WAVEFORMATEX * pcmwf); BOOL GetWaveData(void * pRes, WAVEFORMATEX * & pWaveHeader, void * & pbWaveData, DWORD & cbWaveSize); private: // data member LPVOID m_pTheSound; DWORD m_dwTheSound; LPDIRECTSOUNDBUFFER m_pDsb; BOOL m_bEnabled; static LPDIRECTSOUND m_lpDirectSound; static DWORD m_dwInstances; }; #endif // !defined(AFX_DIRECTSOUND_H__A20FE86F_118F_11D2_9AB3_0060B0CDC13E__INCLUDED_) #endif