扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:李强 来源:天极开发 2007年10月16日
关键字:
BOOL AppWriteDataToBuffer( LPDIRECTSOUNDBUFFER8 lpDsb, // The buffer. DWORD dwOffset, // Our own write cursor. LPBYTE lpbSoundData, // Start of our data. DWORD dwSoundBytes) // Size of block to copy. { LPVOID lpvPtr1; DWORD dwBytes1; LPVOID lpvPtr2; DWORD dwBytes2; HRESULT hr; // Obtain memory address of write block. This will be in two parts // if the block wraps around. hr = lpDsb->Lock(dwOffset, dwSoundBytes, &lpvPtr1,&dwBytes1, &lpvPtr2, &dwBytes2, 0); // If the buffer was lost, restore and retry lock. if (DSERR_BUFFERLOST == hr) { lpDsb->Restore(); hr = lpDsb->Lock(dwOffset, dwSoundBytes, &lpvPtr1, &dwBytes1,&lpvPtr2, &dwBytes2, 0); } if (SUCCEEDED(hr)) { // Write to pointers. CopyMemory(lpvPtr1, lpbSoundData, dwBytes1); if (NULL != lpvPtr2) { CopyMemory(lpvPtr2, lpbSoundData+dwBytes1, dwBytes2); } // Release the data back to DirectSound. hr = lpDsb->Unlock(lpvPtr1, dwBytes1, lpvPtr2,dwBytes2); if (SUCCEEDED(hr)) { // Success. return TRUE; } } // Lock, Unlock, or Restore failed. return FALSE; } |
void Play(LPDIRECTSOUNDBUFFER lpdsbStatic) { if ( lpdsbStatic == NULL ) return; lpdsbStatic->SetCurrentPosition(0); lpdsbStatic->Play(0,0,0); } |
Void StartMixer() { InitDirectSound(); g_pDsbuffer[0] = LoadWaveFile("test1.wav"); g_pDsbuffer[1] = LoadWaveFile("test2.wav"); g_pDsbuffer[2] = LoadWaveFile("test3.wav"); Play(g_pDsbuffer[0]); Play(g_pDsbuffer[1]); Play(g_pDsbuffer[2]); } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者