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

📄 cwave.cpp

📁 打飞机的游戏
💻 CPP
字号:
//声波处理程序
//
//修正:jzZ 2000,05,27

#include "CWave.h"

CWave::CWave()		//默认初始化
{
	Wave_Data = NULL;
	Wave_Size = 0;
}

CWave::CWave(LPSTR fn)	//默认含调入文件名参数的初始化
{
	Wave_Data = NULL;
	Wave_Size = 0;
	LoadWaveFile(fn);
}

CWave::~CWave()		//调用销毁函数,释放资源
{
	GlobalFree(Wave_Data);
	delete lpWaveFormatEx;
	Wave_Data = NULL;
	Wave_Size = 0;
}

BOOL CWave::LoadWaveFile(LPSTR fn)
{
	//申明变量
	HMMIO hmmio;         
	MMCKINFO mmCkRiff;   
	MMCKINFO mmCkChunk;  
	MMRESULT result;     
	LONG     bytesread;

	Wave_Size = NULL;
	//打开参数指向的文件
	hmmio = mmioOpen(fn, NULL, MMIO_READ | MMIO_ALLOCBUF);
	if (hmmio == NULL)
		return FALSE;

	//首先以WAVE文件方式打开
	mmCkRiff.fccType = mmioFOURCC('W', 'A', 'V', 'E');
	result = mmioDescend(hmmio, &mmCkRiff, NULL, MMIO_FINDRIFF);
	if (result != MMSYSERR_NOERROR)
	{
		return FALSE;
	}

	//再用fmt方式打开
	mmCkChunk.ckid = mmioFOURCC('f', 'm', 't', ' ');
	result = mmioDescend(hmmio, &mmCkChunk, &mmCkRiff, MMIO_FINDCHUNK);
	if (result != MMSYSERR_NOERROR)
	{
		return FALSE;
	}

	lpWaveFormatEx = new WAVEFORMATEX;
	//在中WAVEFORMATEX填写信息
	bytesread = mmioRead(hmmio, (char *)lpWaveFormatEx, sizeof(WAVEFORMATEX));
	if (bytesread == -1)
	{
		return FALSE;
	}

	result = mmioAscend(hmmio, &mmCkChunk, 0);
	if (result != MMSYSERR_NOERROR)
	{
		return FALSE;
	}

	mmCkChunk.ckid = mmioFOURCC('d', 'a', 't', 'a');
	result = mmioDescend(hmmio, &mmCkChunk, &mmCkRiff, MMIO_FINDCHUNK);
	if (result != MMSYSERR_NOERROR)
	{
		return FALSE;
	}

	//保存文件尺寸
	Wave_Size = mmCkChunk.cksize;

	//为波形文件分配内存
	Wave_Data = (char *)GlobalAlloc(GMEM_FIXED, Wave_Size);
	if (Wave_Data == NULL)
	{
		return FALSE;
	}

	// 从波形文件读取数据
	bytesread = mmioRead(hmmio, (char *)Wave_Data, Wave_Size);
	if (bytesread == -1)
	{
		return FALSE;
	}

	// 完成,关闭文件
	mmioClose(hmmio, 0);
	return TRUE;
}

DWORD CWave::GetWaveSize()//取得波形大小
{
	return Wave_Size;
}

char *CWave::GetWaveData()//得到波形数据
{
	return Wave_Data;
}

WAVEFORMATEX *CWave::GetWaveFormatEXPtr()//得到波形信息
{
	return lpWaveFormatEx;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -