C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
изменение громкости звука
enton
Отправлено: 26.02.2007, 10:32


Дежурный стрелочник

Группа: Участник
Сообщений: 44



откопал такую функцию

CODE

 DWORD AVolume=0xFFFF; /*Звук от 0x0000 (минимум) до 0xFFFF (максимум)
               if(waveOutSetVolume((void*)WAVE_MAPPER,AVolume) == MMSYSERR_NOERROR)
               {
                       // тут что-то делаем при успешном изменении громкости
               }


не подскажите как сделать так что бы ето все заработало?
Termi_uc
  Отправлено: 26.02.2007, 17:08


Дежурный стрелочник

Группа: Участник
Сообщений: 61



Смотри здесь:
Multimedia Functions

В проге по нажатию одной кнопки звук прибавляется, а по нажатию на другую — убавляется.
Вот пример убавления:
CODE
DWORD Valume;
waveOutGetVolume(0, &Valume);
waveOutSetVolume(0, MAKELONG(Valume — 1000, Valume — 1000));

Функция объявлена в заголовочном файле mmsystem.h
enton
Отправлено: 01.03.2007, 19:57


Дежурный стрелочник

Группа: Участник
Сообщений: 44



все заработало.

я так понимаю Valume — 1000 2 раза задается из за того что 2 канала?
enton
Отправлено: 01.03.2007, 21:03


Дежурный стрелочник

Группа: Участник
Сообщений: 44



кстати замечено что в некоторых случаях двигается не громкоть а баланс на ней!
Rius
Отправлено: 01.03.2007, 22:07


Мастер участка

Группа: Участник
Сообщений: 321



это число указывает громкость сразу обоих каналов, поэтому при некоторых значениях и баланс меняется (разная громкость каналов)

там, помнится, 0xffff0000 — один канал (старшее слово), а 0x0000ffff — другой (младшее слово у dword).
enton
Отправлено: 02.03.2007, 08:58


Дежурный стрелочник

Группа: Участник
Сообщений: 44



я сделал вот так
CODE

       DWORD Volume;
       Volume = MAKELONG(Volume + 0x100, Volume + 0x100);
       if ((int) Volume < 0)
       Volume = 0;

Вернуться в Вопросы программирования в C++Builder