Как мне обрабатывать события DSBPOSITIONNOTIFY?

Я создал сервер и клиент на 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? Если так, как я могу обработать уведомления и определить, произошли ли они?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector