Я создал сервер и клиент на C ++, которые играют музыку. Сейчас я пытаюсь создать уведомления, которые указывают, когда воспроизведение звукового буфера достигло одной четверти или трех четвертей его размера.
//Create event handles
LPDIRECTSOUNDNOTIFY8 directSoundNotify;
HANDLE playEventHandles[2];
playEventHandles[0] = CreateEvent(NULL, FALSE, FALSE, NULL);
playEventHandles[1] = CreateEvent(NULL, FALSE, FALSE, NULL);
buffer->QueryInterface(IID_IDirectSoundNotify8, (LPVOID*)&directSoundNotify);
//Assign handles to DSBPOSITIONNOTIFY array
DSBPOSITIONNOTIFY positionNotify[3];
positionNotify[0].dwOffset = bufferSize / 4; //One quarter of the size
positionNotify[0].hEventNotify = playEventHandles[0];
positionNotify[1].dwOffset = bufferSize - (bufferSize / 4); //Three quarters of the size
positionNotify[1].hEventNotify = playEventHandles[1];
directSoundNotify->SetNotificationPositions(1, positionNotify);
directSoundNotify->Release();
buffer->SetCurrentPosition(0);
buffer->Play(0, 0, 0);
//Wait for notifications
WaitForMultipleObjects(2, playEventHandles, FALSE, INFINITE);
if (/*First notification occurs*/)
{
//Do something
}
else if (/*Second notification occurs*/)
{
//Do something else
}
Что я должен вставить в оператор if в нижней части кода, чтобы определить, когда произошли уведомления? Или я должен обрабатывать уведомления, используя что-то, кроме операторов if? Если так, как я могу обработать уведомления и определить, произошли ли они?
Задача ещё не решена.
Других решений пока нет …