DSBuffer.h
上传用户:sdpcwz
上传日期:2009-12-14
资源大小:1237k
文件大小:2k
源码类别:

书籍源码

开发平台:

Visual C++

  1. // DSBuffer.h : Definition of CDSBuffer class
  2. //
  3. #if !defined(AFX_DSBUFFER_H__7517D749_96E3_11D2_BBF3_9EB4940D843C__INCLUDED_)
  4. #define AFX_DSBUFFER_H__7517D749_96E3_11D2_BBF3_9EB4940D843C__INCLUDED_
  5. #if _MSC_VER > 1000
  6. #pragma once
  7. #endif // _MSC_VER > 1000
  8. #include <mmsystem.h>
  9. #include <dsound.h>
  10. //设置如下两个全局变量控制音量:
  11. extern int   m_nBkGrdVolume; //用于控制背景音乐音量大小
  12. extern int   m_nYinXiaoVolume; //用于控制音效音量大小
  13. //wav文件头格式
  14. struct WaveHeader
  15. {
  16. BYTE        RIFF[4];          // "RIFF"
  17. DWORD       dwSize;           // Size of data to follow
  18. BYTE        WAVE[4];          // "WAVE"
  19. BYTE        fmt_[4];          // "fmt "
  20. DWORD       dw16;             // 16
  21. WORD        wOne_0;           // 1
  22. WORD        wChnls;           // Number of Channels
  23. DWORD       dwSRate;          // Sample Rate
  24. DWORD       BytesPerSec;      // Sample Rate
  25. WORD        wBlkAlign;        // 1
  26. WORD        BitsPerSample;    // Sample size
  27. BYTE        DATA[4];          // "DATA"
  28. DWORD       dwDSize;          // Number of Samples
  29. };
  30. class CDSBuffer : public CObject
  31. {
  32. // Attribute
  33. protected:
  34. LPDIRECTSOUNDBUFFER m_lpDSBuffer; // 声音缓冲区对象
  35. public:
  36. CDSBuffer();
  37. CDSBuffer(const char* FileName,BOOL m_bBackGroundMusic,LPDIRECTSOUND lpDS,DWORD dwFlags = DSBCAPS_CTRLVOLUME );
  38. ~CDSBuffer();
  39. public:
  40. BOOL PlaySound(BOOL bContinue=FALSE);     //播放声音
  41. BOOL StopSound();  //停止播放
  42. BOOL CreateSoundBuffer(LPDIRECTSOUND lpDS, DWORD dwFlags, DWORD dwBufSize, DWORD dwFreq, DWORD dwBitsPerSample, DWORD dwBlkAlign, BOOL bStereo);
  43. BOOL ReadData(FILE* pFile, DWORD dwSize, DWORD dwPos);
  44. BOOL IsValid();
  45. LPDIRECTSOUNDBUFFER GetBuffer() { return m_lpDSBuffer;}
  46. void SetVolume(int percent=50);   //设置音量
  47. void VolumeDown(int percent=10);  //音量增大(percent为百分数,范围为
  48. void VolumeUp(int percent=10);    //音量减小  1~100) 
  49. private:
  50. BOOL    m_bBkGrdMusic;            //是否是背景音乐,TRUE为是
  51. };
  52. #endif // !defined(AFX_DSBUFFER_H__7517D749_96E3_11D2_BBF3_9EB4940D843C__INCLUDED_)