📄 cdsound.h
字号:
#ifndef CDSOUND_H
#define CDSOUND_H
#include <windows.h>
#include "CWave.h"
#include <dsound.h>
typedef struct DsBuffer_Info
{
LPDIRECTSOUNDBUFFER lpDSBuffer;
DWORD dwWaveSize;
LPSTR szFileName;
WAVEFORMATEX * lpWFmtEX;
char * lpWaveData;
} DSBUF_INFO;
class CDSound
{
public:
// CDSound()
//默认构造函数,初始化成员变量
CDSound();
// ~CDSound()
//默认销毁函数,调用销毁已经分配的资源
~CDSound();
// Init()
// 建立DirectSound目标,设置合作级别
// 输入参数: HWND 应用程序得window目标
BOOL Init(HWND hwnd);
// Terminate()
// 销毁DirectSound目标并且释放资源
void Terminate();
// DestroySoundBuffer()
// 根据索引销毁声音缓冲
// 输入参数: num - 声音缓冲队列索引
void DestroySoundBuffer(int num);
// GetSoundDataFromFile
// 从文件中得到声音数据
// 输入参数: 1. fn - 文件名
// 2. num - 需要建立的索引序号
// 返回值: 成功为TRUE否则FALSE
BOOL GetSoundDataFromFile(LPSTR fn, int num);
// CreateBuffer
// 为具体的索引建立缓冲
// *注意: 必须先调用GetSoundDataFrom()
// 输入参数: num - 索引值
// 返回值: 成功TRUE否则FALSE
BOOL CreateBuffer(int num);
// LoadDataToBuffer
// 建立缓冲后,将数据存入缓冲
// *注意: 必须先调用CreateBuffer()
// 输入参数: num - 索引值
// 返回值: 成功TRUE否则FALSE
BOOL LoadDataToBuffer(int num);
// SetTrack()
// 将一个有效的文件调入具体的Dsound缓冲
// * 包含如下步骤:
// 1. 调用GetSoundDataFromFile()
// 2. 调用CreateBuffer()
// 3. 调用LoadSoundDataToBuffer().
// 输入参数: 1. fn - 文件名
// 2. num - 索引值
// 返回值: 成功TRUE否则FALSE
BOOL SetTrack(LPSTR fn, int num);
// Play()
// 播放选择的索引对应的具体缓冲
// 输入参数: 1. loop - 循环标志
// 2. num - 索引值
// 返回值: 成功TRUE否则FALSE
BOOL Play(BOOL loop, int num);
// Stop()
// 停止播放所选择索引的缓冲
// 输入参数: num - 索引值
void Stop(int num);
// IsStackFull()
// 检测队列缓冲是否满
// 返回值: 满TRUE否则FALSE
BOOL IsStackFull()
{return size == 50;}
// IsIndexValid()
// 检测索引是否有效
// 输入参数: num - 索引值
// 返回值: 有效TRUE否则FALSE
BOOL IsIndexValid(int num)
{return (num >= 0 && num < 50);}
// IsBufferExisting?
// 检测缓冲是否存在,缓冲是否被分配
// 输入参数: num - 索引值
// 返回值: 使用TRUE否则
BOOL IsBufferExisting(int num)
{
if(IsIndexValid(num))
{
if(DSBufStack[num].lpDSBuffer != NULL)
return TRUE;
}
return FALSE;
}
private:
LPDIRECTSOUND lpDS;
DSBUF_INFO DSBufStack[50];
int size;
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -