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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
#1

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

12.03.2012, 20:06. Просмотров 672. Ответов 4
Метки нет (Все метки)

Привет) пишу программу в 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++
у меня есть цикл : do{ cout<<"vvedite celoe chislo: "<<endl; cin>>a; for(i=0; i<47; i++) if (a%mas==0) ...

Как остановить программу? - C++
Здравствуйте. Сабж. #include "stdafx.h" #include "vector" #include "conio.h" using namespace std; void...

Как остановить выдачу ошибки? - C++
repeat: if(e<=mode){ cout << "\nИгрок №" << e << a << endl; cin >> sim >> b;//записываем в строку для...

Как остановить выполняемую функцию? - C++
Доброго времени суток. :) Перейду к проблемме: Для моей программы нужна кнопка "отмена" так вот а как можно остановить выполняемою функцию....

Как остановить программу на минуту? - C++
Гуглил минут тридцать пять на все лады- нет. Там и прием витамина С перед сном, и все виды остановок чего и кем угодно- только не...

как остановить ввод без ошибок ? - C++
#include <iostream> int main() { int book, sum; while (std::cin >>book){ sum+=book; } std::cout << sum<< std::endl; ...

Как остановить цикл при прекращении ввода - C++
Как остановить цикл, если не было введено числа(2 раза нажать Enter )? #include<iostream> using namespace std; void main() { ...

Как остановить выполнение кода в запущенном таймере? - C++
Здравствуйте. У меня есть таймер(в С++), в нем выполняются какие-либо действия и когда я нажимаю на кнопку мне надо остановить выполнение...

как остановить ввод, когда text[i] доходит до маркера? - C++
Возникла проблема, не знаю как правильно сделать это: остановить ввод при достижении маркера. У меня текст в файле имеет размер меньший,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
panicwassano
591 / 559 / 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
591 / 559 / 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     как остановить проигрывание звука
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru