Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2007, 17:29   #1
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию как управлять звуком правой и левой колонок с помощью TrackBar?

Люди, как можно управлять звуком правой и левой колонок с помощью TrackBar? Ну чтобы можно было увеличить звук определённого динамика перетаскиванием указателя.

Левый Динамики Правый
|- -| |- -|
|- -| |- -|
|- -| |- -|
|- -| |- -|
|- -| |- -|
|- -| |- -|
|- -| |- -|
|-0-| |-0-|
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 06.04.2007, 17:38   #2
mrandrey
Форумчанин
 
Регистрация: 30.03.2007
Сообщений: 124
По умолчанию

обьяснять не буду, розберешься надеюсь

Код:
uses MMSystem;

function GetWaveVolume: DWord;
var Woc : TWaveOutCaps;
Volume : DWord;
begin
result:=0;
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) =
MMSYSERR_NOERROR then begin
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then begin
WaveOutGetVolume(WAVE_MAPPER, @Volume);
Result := Volume;
end;
end; 
end;

procedure SetWaveVolume(const AVolume: DWord);
var Woc : TWaveOutCaps;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) =
MMSYSERR_NOERROR then begin
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
WaveOutSetVolume(WAVE_MAPPER, AVolume);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var a,b:integer;
begin
a:=GetWaveVolume shr 16;
b:=GetWaveVolume-(GetWaveVolume shr 16)shl 16;
sb2.Position:=a;
sb.Position:=b;
caption:=inttostr(a)+'<=>'+inttostr(b);
end;

procedure TForm1.sbChange(Sender: TObject);
begin
SetWaveVolume(MakeLong(sb.Position,sb2.Position)); 
caption:=inttostr(sb.Position)+'<=>'+inttostr(sb2. Position);
end;
Тут без 100г не розберешся.....
Спасибо не нужно, а на весы слева кликнуть не помешает!!!
mrandrey вне форума Ответить с цитированием
Старый 06.04.2007, 17:49   #3
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

sb,sb2 - это TrackBar'ры???
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 07.04.2007, 03:05   #4
Cezar
Средний прогер
Форумчанин
 
Аватар для Cezar
 
Регистрация: 16.01.2007
Сообщений: 123
По умолчанию

Цитата:
uses MMSystem;

function GetWaveVolume: DWord;
var Woc : TWaveOutCaps;
Volume : DWord;
begin
result:=0;
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) =
MMSYSERR_NOERROR then begin
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then begin
WaveOutGetVolume(WAVE_MAPPER, @Volume);
Result := Volume;
end;
end;
end;

procedure SetWaveVolume(const AVolume: DWord);
var Woc : TWaveOutCaps;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) =
MMSYSERR_NOERROR then begin
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
WaveOutSetVolume(WAVE_MAPPER, AVolume);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var a,b:integer;
begin
a:=GetWaveVolume shr 16;
b:=GetWaveVolume-(GetWaveVolume shr 16)shl 16;
sb2.Position:=a;
sb.Position:=b;
caption:=inttostr(a)+'<=>'+inttostr (b);
end;

procedure TForm1.sbChange(Sender: TObject);
begin
SetWaveVolume(MakeLong(sb.Position, sb2.Position));
caption:=inttostr(sb.Position)+'<=> '+inttostr(sb2. Position);
end;
Ну зачем так усложнять?

Я предлагаю более простой метод:

Подключаешь MMSystem.
Кидаешь два трэкбары.
И в событиях оных пишешь
var volword;
begin
vol:=trackbar1.position*1000;
asm
shl vol,16;
end;
vol:=vol+trackbar2.position*1000;
waveOutSetVolume(0, vol);
end;
И еще свойство МАХ в трэкбарах поставь на 65.
У меня катит.
Cezar вне форума Ответить с цитированием
Старый 07.04.2007, 11:57   #5
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
Сообщение

Цитата:
Сообщение от Cezar Посмотреть сообщение

И в событиях оных пишешь
var volword;
begin
vol:=trackbar1.position*1000;
asm
shl vol,16;
end;
vol:=vol+trackbar2.position*1000;
waveOutSetVolume(0, vol);
end;
И еще свойство МАХ в трэкбарах поставь на 65.
У меня катит.
[/FONT][/SIZE]
я одного не пойму, что одно и тожэ писать в обох обработчиках- и что оно будет?
И у меня только один левый динамик работает, а второй глушыт вообще и делает эхо(луну).
Как зделать чтобы оба динамика работали?
Если у тебя работает, то скинь код твоих работающих обработчиков событий....ато ну никак не получается
и ещё было бы хорошо чтобы когда програма завершает работу звук ставал такой самый, как и был до запуска... как сбросить на умолчание звук не заходя в "Громкость"?
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 07.04.2007, 18:05   #6
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Вот. Вроде работает.
Вложения
Тип файла: rar Volume.rar (167.8 Кб, 113 просмотров)
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Старый 07.04.2007, 18:44   #7
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

Цитата:
Сообщение от Сильванович Михаил Посмотреть сообщение
Вот. Вроде работает.
Спасиба за код, всё оказалось так просто.
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 07.04.2007, 18:53   #8
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

ещё вопрос.
Как зделать чтобы трекбар(в вертикальном положэнии) начинал одщёт снизу вверх, а не с вверху вниз?
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?
ZhekON вне форума Ответить с цитированием
Старый 12.04.2007, 14:50   #9
Сильванович Михаил
Студент
Форумчанин
 
Регистрация: 10.11.2006
Сообщений: 196
По умолчанию

Делай так:
TrackBar1.Position:=Trackbar1.Max; //мы будем считать начальным
pos:=TrackBar1.Max-TrackBar1.Postion; //для себя определяем какая же
//позиция относительно нашей СО.
Visita Interiorem Terrae Rectificando Operae Lapidem...
Сильванович Михаил вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
через какую прогу можно управлять компом соседа? |{ () T Безопасность, Шифрование 19 24.10.2009 10:09
Функции Win32 API Для работы со звуком FSS Win Api 2 29.01.2008 04:41
Звук без колонок Лубышев Помощь студентам 1 22.01.2008 19:50
Из головной организации прислали 3013 файлов *.xls, как управлять? elkipalki Microsoft Office Excel 9 06.12.2007 17:01
Помогите с звуком Killbrum Помощь студентам 1 05.12.2007 21:53