在多线程中是不是多个线程共同占用了同一设备?如果需要同时播放多个声音的话,还是用DirectSound 吧
解决方案 »
- VC6.0 Find In Files 操作 Crash,求解决方法。
- 关于API 创建菜单 无法替换回调函数的问题
- ZwSetSystemtime和NtSetSystemtime和SetSystemtime
- 有人用过VC7.1的正则表达式类CAtlRegExp吗,请教个问题
- 迷惘:问我该何去何从?
- 初学VC,请教一简单问题!********谢先**********
- 利用CHttpFile::QueryInfo获取文件大小的问题。
- 高分救助:300分
- OpenEventLog的问题
- 旧版本错误,help!
- 急!!!,关于StretchBlt的问题?
- 哪位老大可以帮我解释一下下面的程序,我实在是看不明白了.
BOOL CWaveOutDevice::Play(CWave *pWave)
{
if (!Open(pWave->GetFormat())) {
return FALSE;
} CWaveBlockList* pBL = pWave->GetBlockList();
if (!pBL) return FALSE; POSITION pos = pBL->GetHeadPosition();
if (!pos) return FALSE;
// Inc the ref count if we're using it
if (pWave->m_bAutoDestruct) pWave->AddRef();
while (pos) {
CWaveBlock* pBlock = pBL->GetNext(pos);
ASSERT(pBlock); // Allocate a header
WAVEHDR* phdr = (WAVEHDR*)malloc(sizeof(WAVEHDR));
ASSERT(phdr);
// fill out the wave header
memset(phdr, 0, sizeof(WAVEHDR));
phdr->lpData = (char *)(BYTE*) pBlock->GetSamples();
phdr->dwBufferLength = pBlock->GetSize();
phdr->dwUser = (DWORD)(void*)pWave; // so we can find the object // Prepare the header
MMRESULT mmr = waveOutPrepareHeader(m_hOutDev,
phdr,
sizeof(WAVEHDR));
if (mmr) {
MMERR(mmr);
return FALSE;
}
// Mark the wave as busy playing
pWave->IncPlayCount(); // Start it playing
mmr = waveOutWrite(m_hOutDev,
phdr,
sizeof(WAVEHDR));
if (mmr) {
MMERR(mmr);
return FALSE;
} // Add one to the block count
m_iBlockCount++;
} // next block return TRUE;
}
我以上做过,应该不难,只是解码过程是用别人的lib罢了
还有哪位愿意帮忙?请留下email。