home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 27 / IOPROG_27.ISO / SOFT / CDX.ZIP / Src / Cds / Sound.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1998-09-14  |  1.7 KB  |  54 lines

  1. //////////////////////////////////////////////////////////////////////////////////
  2. // Source File:  [ CDS_Sound Implementation ]
  3. //////////////////////////////////////////////////////////////////////////////////
  4. #include "CDS.h"
  5.  
  6. //////////////////////////////////////////////////////////////////////////////////
  7. // CDS_Sound Constructor
  8. //////////////////////////////////////////////////////////////////////////////////
  9. CDS_Sound::CDS_Sound()
  10. {
  11.     m_Listener = NULL;
  12.     m_Primary = NULL;
  13.     m_DirectSound = NULL;
  14. }
  15.  
  16. //////////////////////////////////////////////////////////////////////////////////
  17. // CDS_Sound Destructor
  18. //////////////////////////////////////////////////////////////////////////////////
  19. CDS_Sound::~CDS_Sound()
  20. {
  21.     SAFE_RELEASE(m_Listener);
  22.     SAFE_RELEASE(m_Primary);
  23.     SAFE_RELEASE(m_DirectSound);
  24. }
  25.  
  26. //////////////////////////////////////////////////////////////////////////////////
  27. // CDS_Sound Create
  28. //////////////////////////////////////////////////////////////////////////////////
  29. HRESULT CDS_Sound::Create(void *hwnd)
  30. {
  31.     HRESULT rval;
  32.     DSBUFFERDESC desc;
  33.  
  34.     rval = DirectSoundCreate(NULL, &m_DirectSound, NULL);
  35.     if(rval != DS_OK) return rval;
  36.  
  37.     rval = m_DirectSound->SetCooperativeLevel(hwnd, DSSCL_EXCLUSIVE);
  38.     if(rval != DS_OK) return rval;
  39.  
  40.     ZeroMemory(&desc, sizeof(DSBUFFERDESC));
  41.     desc.dwSize = sizeof(DSBUFFERDESC);
  42.     desc.dwFlags = DSBCAPS_CTRL3D | DSBCAPS_PRIMARYBUFFER;
  43.  
  44.     // Create the primary buffer
  45.     rval = m_DirectSound->CreateSoundBuffer(&desc, &m_Primary, NULL);
  46.     if(rval != DS_OK) return rval;
  47.  
  48.     // Obtain the listener interface
  49.     rval = m_Primary->QueryInterface(IID_IDirectSound3DListener, (LPVOID*)&m_Listener);
  50.     if(rval != DS_OK) return rval;
  51.  
  52.     return rval;
  53. }
  54.