md_sound.h
来自「MDEngine2plus游戏开发库! 用来开发游戏超级简单!」· C头文件 代码 · 共 98 行
H
98 行
//********************************************************************
// MD 引擎 声音 内核部件的定义
// Powered by @J--S Studio Johnhans 2002.7.15
//********************************************************************
#ifndef MD_SOUND_H
#define MD_SOUND_H
#ifdef MDENGINE2P_EXPORTS
#define MDENGINE_API __declspec(dllexport)
#else
#define MDENGINE_API __declspec(dllimport)
#endif
#include "MD_Audio.h"
// 声音PAN [ -1.0 ~ 1.0 ] 之间
// 声音VOL [ 0 ~ 1.0 ] 之间
class CSoundBase;
class MDENGINE_API CMD_Sound
{
public:
CMD_Sound();
CMD_Sound(char* Provider);
virtual ~CMD_Sound();
static void SetActiveAudio(CMD_Audio* Audio) { m_lpAudio=Audio;}
public:
bool ConnectProvider(char *Provider);
void FreeProvider();
bool Create(TCHAR *FileName,BYTE mode=SOUND_STREAM);
bool Create(LPVOID buffer,DWORD bufsize,BYTE mode=SOUND_STREAM);
bool Create(HANDLE handle,BYTE mode=SOUND_STREAM);
bool Create(WAVEFORMATEX *wfex,LPBYTE pdata,DWORD bufsize);
bool SetVolume(float Volume);
float GetVolume(void);
bool SetPan(float Pan);
float GetPan(void);
bool SetFrequency(DWORD freq);
DWORD GetFrequency(void);
DWORD GetSamplesPerSec(void) { return m_SamplesPerSec;}
bool Play(bool bLoop=false,bool bRestart=true);
void Pause(bool pause);
bool IsPlaying(void);
void Free(void);
void Stop(void);
private:
static CMD_Audio* m_lpAudio;
HINSTANCE m_hInstProvider;
CSoundBase *m_pLoader;
LPVOID releaseDLL;
LPDIRECTSOUNDBUFFER m_lpDSBuffer;
LPDIRECTSOUNDNOTIFY m_lpDSNotify;
HANDLE m_hEvent[2];
HANDLE m_hFillDataThread;
DWORD m_dwNextWriteOffset;
DWORD m_SamplesPerSec;
DWORD m_dwBufferSize; // DS Buffer Size
DWORD m_dwNotifySize; // DS NotifySize (m_dwBufferSize/2)
bool m_bPartA; // Write Position
BYTE m_Mode; // 当前创建的模式:流、3D
BYTE m_LastStat; // PAUSE 前的播放状态
DWORD m_dwErrorCode;
private:
bool create(WAVEFORMATEX *wfex,LPBYTE pdata,DWORD bufsize);
bool create(LPVOID loader,BYTE mode = SOUND_STREAM);
bool createNotify();
bool streamFillData();
friend DWORD WINAPI FillDataProc(LPVOID lpParameter);
};
class CSoundBase
{
public:
virtual bool Open(char *filename) = 0;
virtual bool Open(HANDLE file) = 0;
virtual bool Open(LPVOID buffer,DWORD buflen) = 0;
virtual void Close(void) = 0;
virtual DWORD ReadData(LPVOID buffer, DWORD buflen) = 0;
virtual bool ResetPosition(void) = 0;
virtual WAVEFORMATEX* GetWaveHeader(void){ return m_pWaveFormatEx; }
virtual DWORD GetWaveSize(void){ return m_dwSize; }
protected:
WAVEFORMATEX *m_pWaveFormatEx;
DWORD m_dwSize;
};
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?