在多线程中是不是多个线程共同占用了同一设备?如果需要同时播放多个声音的话,还是用DirectSound 吧
解决方案 »
- 求助!导航窗格如何双击打开文件
- windowless_richedit 插入ole后 无法调整ole控件的大小 请大侠帮忙解决!..
- dll中对话框上的CListCtrl控件,第2次出现时不能设置图标
- 怎样在对话框中,获得它被激活的消息?
- 急!!如何在richedit中插入gif格式的图片?以及在richedit中实现象qq中接收文件的超链接!!!!!!!!!
- 想在WinSocket下实现这样功能的接收函数
- 采集卡在98下正常在2000下不正常
- SOS:我的图形缩放时总靠在左上角不动...
- 关于MSCOMM控件的一点小问题
- SOCK_STREAM 类型的socket收发长数据问题
- 急!!!,关于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。