Как запустить / остановить wav-звуки под C ++ Windows 7 - PullRequest
0 голосов
/ 04 сентября 2018

Я очень старался найти решение для следующего требования под C ++ / Visual Studio:

Все просто: для тревоги я должен проигрывать несколько звуков wav из файлов последовательно в бесконечном цикле, каждый из которых разделен небольшой задержкой:

звук-1 ... звук-2 ... звук-н ... звук-1 ... звук-2 ...

В любое время должна быть возможность отменить эту последовательность звуков.

Я пытался поиграться с PlaySound(), но проблема в том, что я не могу правильно остановить звуки, когда они работают.

https://msdn.microsoft.com/en-us/library/Dd743680(v=VS.85).aspx

Когда звук воспроизводится асинхронно по флагу, его можно остановить, указав значение NULL для параметра 1, но тогда я не могу знать, когда звук-1 заканчивается до запуска звука-2. Фактически, запуск звука-2 будет прерывать звук-1.

В режиме синхронный прерывание звука невозможно.

Чтобы иметь возможность отменять звуки, я пытался поместить PlaySound в Poco::Thread, но как отменить тему? Отмена потока не предусмотрена ... Использование Poco::Task instaed дает unhandled exception at 0x01002d62 ... при отмене, поэтому оно также не работает.

Что было бы предпочтительным решением для этого? Есть ли лучшее решение?

Спасибо!

1 Ответ

0 голосов
/ 05 сентября 2018

Они все файлы WAV, вы знаете, как долго они сохраняются. Когда вы начнете играть sound1, сохраните время, когда оно закончится. Не нужно догадываться.

...