Форум программистов, компьютерный форум CyberForum.ru

как остановить проигрывание звука - C++

Восстановить пароль Регистрация
 
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
12.03.2012, 20:06     как остановить проигрывание звука #1
Привет) пишу программу в WindowsForm. на форме есть кнопка, которая открывает WAV-файл и проигрывает (код взят отсюда http://www.mirgames.ru/articles/sound/directsound.html)
есть ещё одна кнопка, которая должна останавливать проигрывание мелодии. не могу понять, что написать в её код, чтобы остановить воспроизведение? я пробовала так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// часть кода, где идёт воспроизведение сделала отдельной функцией, на вход которой
//подаём булеву переменную, которая при нажатии кнопки "стоп" должна принять значение false.
void(bool c)
{
if (c)
{
        do
        {
                pSoundBuffer->GetStatus(&hrStatus);
        }
        while(hrStatus==DSBSTATUS_PLAYING);
}
}
но это не работает. при воспроизведении кнопка стоп даже не нажимается... помогите, кто может, пожалуйста! заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2012, 20:06     как остановить проигрывание звука
Посмотрите здесь:

C++ как остановить программу?
C++ Как остановить выполнение кода в запущенном таймере?
C++ как остановить ввод без ошибок ?
C++ как остановить цикл ?
C++ Как остановить выполняемую функцию?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
12.03.2012, 20:30     как остановить проигрывание звука #2
внимательно читайте то, что вы линкнули, а именно как написано в статье
"Задерживаем окончание выполнения функции до тех пор, пока проигрывается файл"
C++
1
pSoundBuffer->Play(0,0,0);
нетрудно предположить чтобы остановить надо запустить стоп
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
12.03.2012, 20:41  [ТС]     как остановить проигрывание звука #3
Цитата Сообщение от panicwassano Посмотреть сообщение
внимательно читайте то, что вы линкнули, а именно как написано в статье
"Задерживаем окончание выполнения функции до тех пор, пока проигрывается файл"
C++
1
pSoundBuffer->Play(0,0,0);
нетрудно предположить чтобы остановить надо запустить стоп
т.е. нужно написать эту строчку в код кнопки "стоп"?? если да, то это не помогло( при нажатии на кнопку "стоп" ничего не происходит, а если ещё несколько раз нажать, то всё виснет)
может стоит попробовать с потоками?? или всё же можно проще?
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
12.03.2012, 20:48     как остановить проигрывание звука #4
конечно ведь слово play переводится как играть, и этот код для проигрывания звука!!!
я привел вам аналогию что если есть play, должен быть и stop, разбирайтесь с psoundbuffer
и вообще почитайте хотя бы комментарии к программе на сайте, что вы линкнули
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
12.03.2012, 21:36  [ТС]     как остановить проигрывание звука #5
Цитата Сообщение от panicwassano Посмотреть сообщение
конечно ведь слово play переводится как играть, и этот код для проигрывания звука!!!
я привел вам аналогию что если есть play, должен быть и stop, разбирайтесь с psoundbuffer
и вообще почитайте хотя бы комментарии к программе на сайте, что вы линкнули
спасибо) буду разбираться)

Добавлено через 13 минут
C++
1
pSoundBuffer->Stop();
к сожалению тоже не помогает. буду дальше искать

Добавлено через 32 минуты
вот, может кому пригодится)
в код кнопки "стоп" пишем
C++
1
pSoundBuffer->Play(0,0,0);
а в цикл где воспроизводится мелодия добавляем
C++
1
2
3
4
5
while (::PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))
        {
            ::TranslateMessage(&Msg);
            ::DispatchMessage(&Msg);
        }
Yandex
Объявления
12.03.2012, 21:36     как остановить проигрывание звука
Ответ Создать тему
Опции темы

Текущее время: 23:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru