
Сообщение от
mungo
То есть если я правильно понял, то после проигрывания текущего фрагмента звук выключается на какое-то время, после которого идет пауза, формируемая винапи. Пока не придумал, как обойти...
У тебя просто неправильно сделано ожидание окончания воспроизведения.
Надо как-то так:
Код:
HANDLE event = CreateEvent(0, FALSE, FALSE, 0);//создаем объект события
waveOutOpen(&Handle, WAVE_MAPPER, &wf, DWORD_PTR(event), 0, CALLBACK_EVENT | WAVE_FORMAT_DIRECT);//открываем устройство и говорим, что надо по окончании воспроизведения буфера выставлять событие
waveOutPrepareHeader(handle,&whdr,sizeof(whdr));//готовим буфер
whdr.dwFlags |= WHDR_DONE;//помечаем как свободный
waveOutWrite(...);//пишем
while (!(whdr.dwFlags & WHDR_DONE))
{
WaitForSingleObject(event, INFINITE);
}
//дождались окончания- закрываем все
waveOutUnprepare(...)
waveOutClose(...);
CloseHandle(event);