|
|
为什么我的下面这段代码编译能通过,没警告也没错,但是却出现冲突,为什么呢
LPDIRECTSOUNDBUFFER CSound::CreateSndBuffer(char *path)
{
WAVEFORMATEX swfmt; // 声明声音结构
MMCKINFO ckRiff; // RIFF区块的信息
MMCKINFO ckInfo; // 子区块的信息
HMMIO hmmio; // 打开的多媒体文件
DWORD size; // 实际数据大小
hmmio = mmioOpen(path,NULL,MMIO_ALLOCBUF|MMIO_READ);
ckRiff.fccType = mmioFOURCC('W','A','V','E'); // 设定文件类型
mmioDescend(hmmio,&ckRiff,NULL,MMIO_FINDRIFF); // 查找类型
ckInfo.ckid = mmioFOURCC( 'f', 'm' , 't' , ' '); // 设定区块类型
mmioDescend(hmmio,&ckInfo,&ckRiff,MMIO_FINDCHUNK); // 查找区块
mmioRead(hmmio,(HPSTR)&swfmt,sizeof(swfmt));
mmioAscend(hmmio,&ckInfo,0); // 跳出子区块
ckInfo.ckid = mmioFOURCC('d','a','t','a'); // 设定区块类型
mmioDescend(hmmio,&ckInfo,&ckRiff,MMIO_FINDCHUNK); // 查找区块
size = ckInfo.cksize;
LPDIRECTSOUNDBUFFER pSBuf; // 声明缓冲区指针
DSBUFFERDESC desc; // 声明描述结构
memset(&desc,0,sizeof(desc)); // 清空结构内容
desc.dwSize = sizeof(desc); // 配置结构大小
desc.dwBufferBytes = size; // 设定缓冲区大小
desc.lpwfxFormat = &swfmt; // 设定缓冲区格式
desc.dwFlags = DSBCAPS_STATIC | DSBCAPS_CTRLPAN |
DSBCAPS_CTRLVOLUME | DSBCAPS_GLOBALFOCUS;
lpds->CreateSoundBuffer(&desc,&pSBuf,NULL);
LPVOID pAudio;
DWORD bytesAudio;
pSBuf->Lock(0,size,&pAudio,&bytesAudio,NULL,NULL,NULL);
mmioRead(hmmio,(HPSTR)pAudio,bytesAudio); // 读取音文件数据
pSBuf->Unlock(pAudio,bytesAudio,NULL,NULL);//就在这里出错了,不知道为什么
mmioClose(hmmio,0);
return pSBuf;
}abc |
|