⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdsound.h

📁 打飞机的游戏
💻 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 + -