📄 directsound.h
字号:
/*----------------------------------------------------------------*\
函 数:
void DirectSoundError(HRESULT hErr)
功 能:
DirectSound 错误信息显示
参 数:
错误ID
返回值:
无
\*----------------------------------------------------------------*/
void DirectSoundError(char *ModuleName, HRESULT hresult);
/*----------------------------------------------------------------*\
函 数:
void DestroyDirectSound(void)
功 能:
销毁DirectSound对象
参 数:
无
返回值:
无
\*----------------------------------------------------------------*/
void DestroyDirectSound(void);
/*----------------------------------------------------------------*\
函 数:
BOOL InitializeDirectSound(void)
功 能:
初始化DirectSound
参 数:
无
返回值:
TURE - 成功
FLASE - 失败
\*----------------------------------------------------------------*/
DllExport BOOL InitializeDirectSound(void);
/*----------------------------------------------------------------*\
函 数:
LPDIRECTSOUNDBUFFER CreateSoundBuffer(DWORD dwBufSize,
DWORD dwFreq,
DWORD dwBitsPerSample,
DWORD dwBlkAlign,
BOOL bStereo)
功 能:
创建声音缓冲区
参 数:
dwBufSize - 缓冲区容量
dwFreq - 采样率(44100、22000...)
dwBitsPerSample - 样本的比特位数(16、8、4...)
dwBlkAlign - 数据块对齐,为1
bStereo - 立体声(1) or 单声道(0)
返回值:
!NULL - 成功,返回声音缓冲区指针
NULL - 失败
\*----------------------------------------------------------------*/
DllExport LPDIRECTSOUNDBUFFER dsCreateSoundBuffer(DWORD dwBufSize, // 缓冲区容量
DWORD dwFreq, // 采样率(44100、22000...)
DWORD dwBitsPerSample, // 样本的比特位数(16、8、4...)
DWORD dwBlkAlign, // 数据块对齐
BOOL bStereo); // 立体声 or 单声道
/*----------------------------------------------------------------*\
函 数:
dsReadSoundDataFromBuff(LPDIRECTSOUNDBUFFER g_lpDSBuff, char *Buff, DWORD dwSize)
功 能:
从文件中读声音数据到声音缓冲区中
参 数:
g_lpDSBuff - 声音缓冲区
Buff - 文件指针
dwSize - 数据大小
返回值:
TRUE - 成功
FALSE - 失败
\*----------------------------------------------------------------*/
DllExport BOOL dsReadSoundDataFromBuff(LPDIRECTSOUNDBUFFER g_lpDSBuff, char *Buff, DWORD dwSize);
/*----------------------------------------------------------------*\
函 数:
LPDIRECTSOUNDBUFFER dsLoadSoundFromBuff(char *Buff)
功 能:
根据数据缓冲区(Sound)创建面并将数据读入面中
参 数:
Buff - 数据指针
返回值:
!NULL - 成功,返回声音缓冲区指针
NULL - 失败
\*----------------------------------------------------------------*/
DllExport LPDIRECTSOUNDBUFFER dsLoadSoundFromBuff(char *Buff);
/*----------------------------------------------------------------*\
函 数:
BOOL dsPlaySound(LPDIRECTSOUNDBUFFER g_lpDSBuff, int Pan, DWORD dwFlags)
功 能:
播放声音
参 数:
g_lpDSBuff - 声音缓冲区
Pan - 左右声道均衡
dwFlags - 循环标志:0-不循环,1-循环
返回值:
TRUE - 成功
FLASE - 失败
\*----------------------------------------------------------------*/
DllExport BOOL dsPlaySound(LPDIRECTSOUNDBUFFER g_lpDSBuff, int Pan, DWORD dwFlags);
/*----------------------------------------------------------------*\
函 数:
BOOL dsStopSound(LPDIRECTSOUNDBUFFER g_lpDSBuff)
功 能:
停止播放声音
参 数:
g_lpDSBuff - 声音缓冲区
返回值:
TRUE - 成功
FLASE - 失败
\*----------------------------------------------------------------*/
DllExport BOOL dsStopSound(LPDIRECTSOUNDBUFFER g_lpDSBuff);
/*----------------------------------------------------------------*\
函 数:
BOOL dsSetSoundVolume(LPDIRECTSOUNDBUFFER g_lpDSBuff, LONG Volume)
功 能:
设置声音的音量
参 数:
g_lpDSBuff - 声音缓冲区
Volume - 音量
返回值:
TRUE - 成功
FLASE - 失败
\*----------------------------------------------------------------*/
DllExport BOOL dsSetSoundVolume(LPDIRECTSOUNDBUFFER g_lpDSBuff, LONG Volume);
/*----------------------------------------------------------------*\
函 数:
LONG dsGetSoundVolume(LPDIRECTSOUNDBUFFER g_lpDSBuff)
功 能:
获取声音的音量
参 数:
g_lpDSBuff - 声音缓冲区
返回值:
音量
\*----------------------------------------------------------------*/
DllExport LONG dsGetSoundVolume(LPDIRECTSOUNDBUFFER g_lpDSBuff);
/*----------------------------------------------------------------*\
| 函 数:DirectSound系统函数 -- DSOUND.DLL |
\*----------------------------------------------------------------*/
/*----------------------------------------------------------------*\
HRESULT DirectSoundCreate( // 创建DirectSound对象
LPGUID lpGuid, // 声音驱动器, 缺省为NULL
LPDIRECTSOUND * ppDS, // DirectSound 对象指针
IUnknown FAR * pUnkOuter // 必须为NULL
);
IDirectSound::CreateSoundBuffer // 创建声音缓冲区
HRESULT CreateSoundBuffer(
LPCDSBUFFERDESC lpcDSBufferDesc,
LPLPDIRECTSOUNDBUFFER lplpDirectSoundBuffer,
IUnknown FAR * pUnkOuter // 必须为NULL
);
IDirectSound::SetCooperativeLevel // 设置协作层
HRESULT SetCooperativeLevel(
HWND hWnd, // 父窗口句柄
DWORD dwFlags // 控制标志
);
IDirectSoundBuffer::GetCurrentPosition // 取播放和写的位置
HRESULT GetCurrentPosition(
LPDWORD lpdwCurrentPlayCursor, // 播放的位置
LPDWORD lpdwCurrentWriteCursor // 写的位置
);
IDirectSoundBuffer::GetFrequency // 取采样率
HRESULT GetFrequency(
LPDWORD lpdwFrequency
);
IDirectSoundBuffer::GetPan // 取左右声道均衡
HRESULT GetPan(
LPLONG lplPan
);
IDirectSoundBuffer::GetStatus // 取缓冲区状态
HRESULT GetStatus(LPDWORD lpdwStatus);
返回值:
DSBSTATUS_BUFFERLOST 缓冲区丢失
DSBSTATUS_LOOPING 循环播放
DSBSTATUS_PLAYING 正在播放
IDirectSoundBuffer::GetVolume // 取音量
HRESULT GetVolume(
LPLONG lplVolume
);
IDirectSoundBuffer::Lock // 获取声音缓冲区地址
HRESULT Lock(
DWORD dwWriteCursor,
DWORD dwWriteBytes,
LPVOID lplpvAudioPtr1,
LPDWORD lpdwAudioBytes1,
LPVOID lplpvAudioPtr2,
LPDWORD lpdwAudioBytes2,
DWORD dwFlags
);
IDirectSoundBuffer::Play // 声音播放
HRESULT Play(
DWORD dwReserved1, // 保留. 必须为0.
DWORD dwReserved2, // 保留. 必须为0.
DWORD dwFlags // 播放方式. DSBPLAY_LOOPING -- 循环
);
IDirectSoundBuffer::Restore // 恢复丢失的面
HRESULT Restore();
IDirectSoundBuffer::SetCurrentPosition // 设置播放的位置
HRESULT SetCurrentPosition(
DWORD dwNewPosition // 新的播放位置
);
IDirectSoundBuffer::SetFrequency // 设置采样率
HRESULT SetFrequency(
DWORD dwFrequency
);
IDirectSoundBuffer::SetPan // 设置左右声道均衡
HRESULT SetPan(
LONG lPan
);
IDirectSoundBuffer::SetVolume // 设置音量
HRESULT SetVolume(
LONG lVolume
);
IDirectSoundBuffer::Stop // 停止声音的播放
HRESULT Stop();
IDirectSoundBuffer::Unlock // 与Lock配合
HRESULT Unlock(
LPVOID lpvAudioPtr1,
DWORD dwAudioBytes1,
LPVOID lpvAudioPtr2,
DWORD dwAudioBytes2
);
\*----------------------------------------------------------------*/
/*----------------------------------------------------------------*\
| 函 数:DirectSound系统函数 -- DSOUND.DLL |
\*----------------------------------------------------------------*/
/////////////////////////[ End ]\\\\\\\\\\\\\\\\\\\\\\\\\
/////////////////////////[ DirectSound 系统 ]\\\\\\\\\\\\\\\\\\\\\\\\\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -