www.pudn.com > DST.rar > DSBuffer.h
// DSBuffer.h : Definition of CDSBuffer class // #if !defined(AFX_DSBUFFER_H__7517D749_96E3_11D2_BBF3_9EB4940D843C__INCLUDED_) #define AFX_DSBUFFER_H__7517D749_96E3_11D2_BBF3_9EB4940D843C__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include#include //设置如下两个全局变量控制音量: extern int m_nBkGrdVolume; //用于控制背景音乐音量大小 extern int m_nYinXiaoVolume; //用于控制音效音量大小 //wav文件头格式 struct WaveHeader { BYTE RIFF[4]; // "RIFF" DWORD dwSize; // Size of data to follow BYTE WAVE[4]; // "WAVE" BYTE fmt_[4]; // "fmt " DWORD dw16; // 16 WORD wOne_0; // 1 WORD wChnls; // Number of Channels DWORD dwSRate; // Sample Rate DWORD BytesPerSec; // Sample Rate WORD wBlkAlign; // 1 WORD BitsPerSample; // Sample size BYTE DATA[4]; // "DATA" DWORD dwDSize; // Number of Samples }; class CDSBuffer : public CObject { // Attribute protected: LPDIRECTSOUNDBUFFER m_lpDSBuffer; // 声音缓冲区对象 public: CDSBuffer(); CDSBuffer(const char* FileName,BOOL m_bBackGroundMusic,LPDIRECTSOUND lpDS,DWORD dwFlags = DSBCAPS_CTRLVOLUME ); ~CDSBuffer(); public: BOOL PlaySound(BOOL bContinue=FALSE); //播放声音 BOOL StopSound(); //停止播放 BOOL CreateSoundBuffer(LPDIRECTSOUND lpDS, DWORD dwFlags, DWORD dwBufSize, DWORD dwFreq, DWORD dwBitsPerSample, DWORD dwBlkAlign, BOOL bStereo); BOOL ReadData(FILE* pFile, DWORD dwSize, DWORD dwPos); BOOL IsValid(); LPDIRECTSOUNDBUFFER GetBuffer() { return m_lpDSBuffer;} void SetVolume(int percent=50); //设置音量 void VolumeDown(int percent=10); //音量增大(percent为百分数,范围为 void VolumeUp(int percent=10); //音量减小 1~100) private: BOOL m_bBkGrdMusic; //是否是背景音乐,TRUE为是 }; #endif // !defined(AFX_DSBUFFER_H__7517D749_96E3_11D2_BBF3_9EB4940D843C__INCLUDED_)