Вопрос

Я хочу воспроизводить звук, пока программа работает в C ++. Я использую код:

 void fighterplanesound() 
{PlaySound(TEXT("bombdrop.wav"), NULL, SND_FILENAME|SND_ASYNC);}

Я думал, что флаг SND_ASYNC решит эту проблему, но это не так. То, что происходит, это то, что программа будет пауза, или контроль не будет двигаться дальше, пока звук не будет воспроизведен. Как я могу играть в звук, пока программа продолжает работать. Чтобы уточнить, программа-это программа консоли Windows, которая работает в окне MS-DOS.

Это было полезно?

Решение 2

Ok. Что я понял, так это то, что вы не можете включить метод Playsound в функцию, потому что, хотя флаг Async был там, контроль должен был полностью выполнить метод PlaySound, прежде чем вернуться, поэтому не ставите его в функцию, если нет больше Код в функции (в этом случае звук будет воспроизводиться во время выполнения этого кода) или, другими словами, элемент управления не вернется из функции, пока не будет завершено PlaySound, и потому что в функции нет другого кода для выполнения, управление ожидает Пока метод игры не будет закончен, а затем не движется дальше.

Другие советы

Как насчет того, чтобы играть звук в другой ветке?

На самом деле у меня была та же проблема в моем приложении для iOS. Вы знаете, сколько времени нужно, чтобы воспроизводить свой файл .wav. Вы можете создать таймер, который вызывает ваш метод FighterPlanesound () каждый период окончания времени вашего файла. Не лучшее решение, но это работает для меня.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top