SBuffer.h
上传用户:cydong117
上传日期:2009-11-10
资源大小:638k
文件大小:3k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. // SBuffer.h: interface for the CSBuffer class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_SBUFFER_H__9B72C71D_B3EA_4B35_B9FD_1EF3906BDDF1__INCLUDED_)
  5. #define AFX_SBUFFER_H__9B72C71D_B3EA_4B35_B9FD_1EF3906BDDF1__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include<stdio.h>
  10. #include<windows.h>
  11. #include "Sound.h"
  12. class CSBuffer  
  13. {
  14. public:
  15. DWORD GetLastUsedTime(VOID);
  16. INT m_ID; // Buffer ID;
  17. INT    nBufferIdx;
  18. CSBuffer();
  19. virtual ~CSBuffer();
  20. HRESULT Load(CSound* pDS, const char *Filename, int Num=1);
  21. HRESULT Load(CSound* pDS, LONG lSize, FILE *fptr, int Num=1);
  22. HRESULT Load(CSound* pDS, LONG lSize, CHAR* lpCache, int Num=1);
  23. HRESULT Extract(CSound* pDS, LONG lSize, char *ptr, int Num=1);
  24. HRESULT Play( DWORD dwFlags );
  25. HRESULT PlayExtended( DWORD dwFlags, int Pan, int Volume, DWORD freq );
  26. HRESULT PlayExtended( float x, float y, float z, DWORD dwFlags );
  27. HRESULT Stop(VOID);
  28. HRESULT Stop(INT nBufferIdx);
  29. VOID SetVolume(INT nBufferIdx,LONG Volume);
  30. VOID SetVolume(LONG Volume);
  31. VOID SetPan(INT nBufferIdx,LONG Pan);
  32. VOID SetPan(LONG Pan);
  33. VOID Pause(INT nBufferIdx);
  34. VOID Continue(INT nBufferIdx);
  35. DWORD Playing(VOID);
  36. HRESULT SetCone( float x, float y, float z, DWORD InsideAngle, DWORD OutsideAngle, long OutsideVolume );
  37. HRESULT Set3dProperties( DWORD Mode, float MinDistance, float MaxDistance, float VelX, float VelY, float VelZ );
  38. HRESULT FillStreamBuffer(int nr);
  39. HRESULT UpdateStream( BOOL FillAll );
  40. HRESULT ReadDataFromMemory(char *ptr, DWORD dwSize);
  41. HRESULT LoadFromRes( CSound* pDS, const char* Filename, int Num = 1 );
  42. HRESULT CreateSoundBuffer(DWORD dwBufSize, PCMWAVEFORMAT *pcmwf, int Num);
  43. LPDIRECTSOUNDBUFFER GetFreeBuffer(VOID);
  44. HRESULT EnableStreaming( int size, int blocks );
  45. HRESULT Enable3d( void );
  46. VOID Release(VOID);
  47. private:
  48. int m_nBuffers; // The number of sound buffers created
  49. int m_Current; // The currently selected buffer
  50. const char* m_Filename; // The name of the WAVE file
  51. DWORD m_dwLastUseTime; // Last Used Time;
  52. CSound* m_pDS; // Contains a pointer to the CDXSound object
  53. LPDIRECTSOUNDBUFFER *m_lpDSB; // The IDirectSoundBuffer object
  54. LPDIRECTSOUND3DBUFFER *m_lp3dBuffer;
  55. BOOL m_Streamed; // The playback will be streamed
  56. BOOL m_sLoop;
  57. BOOL m_sStop;
  58. BYTE m_sDone;
  59. WORD m_sSize; // size of each stream block
  60. BYTE m_sBlocks, m_sCurrent; // Stream Block Count and Current position
  61. DWORD m_sWaveLength;
  62. FILE *m_sFile; // Filepointer for Streaming
  63. BOOL m_3d; // Enables 3d functions for this Buffer
  64. };
  65. #endif // !defined(AFX_SBUFFER_H__9B72C71D_B3EA_4B35_B9FD_1EF3906BDDF1__INCLUDED_)