Кранты соседям, или ТВОЙ собственный мега-плеер

Horrific (smirnandr@mail.ru)

Спецвыпуск Хакер, номер #004, стр. 004-094-3

end;

А вот теперь выдели второй TrackBar. Снова иди в "ObjectInspector" и щелкай по закладке "Events". Ткни один раз мышкой в строку "OnChange", и перед тобой появится выпадающий список, в котором ты должен выбрать только что созданную процедуру (TrackBar1Change).

Теперь при изменении положения любого из TrackBar-ов будет вызываться одна и та же процедура "TrackBar1Change". Давай разберем по косточкам, что написано в этой процедуре. Это будет немного сложно, но полезно.

Первая строка (var LValue,RValue:Word) говорит, что нам нужно выделить память под две переменные Lvalue (это у нас будет значение громкости левого канала) и Rvalue (это значение громкости правого канала).

Строка "LValue:=$FF-TrackBar1.Position" высчитывает значение громкости для левого канала. На понятном языке это будет звучать так: "переменной Lvalue присвоить значение (шестнадцатиричное 255 - текущая позиция у TrackBar1". То же самое касается следующей строки, где рассчитывается громкость правого канала. Зачем нужно отнимать 255 от текущей позиции? Это связано с тем, что 0 - означает наивысшую громкость, а 255 - наименьшую. Этими двумя строчками я переворачиваю значение текущей позиции у TrackBar1. Если не переворачивать, то нижняя позиция TrackBar1 будет соответствовать максимальной громкости, а верхняя - минимальной. Это неудобно, поэтому я сделал подъем с переворотом.

Следующая строка: waveOutSetVolume(0, (RValue SHL 8)+LValue) - выставляет громкость звука. WaveOutSetVolume - процедура, устанавливающая громкость. Первый параметр в ней (ноль) означает, что надо установить громкость WAVE/Direct Sound выхода. У звуковой карты может быть несколько выходов: WAVE/Direct Sound, CD Audio, MIDI и линейный вход - ты в курсе?

(RValue SHL 8)+LValue означает, что надо взять переменную Rvalue, сдвинуть ее на 8 бит влево и прибавить значение левого канала. На первый взгляд непонятно, но попробую объяснить все на пальцах. Представим, что у тебя значение правого канала равно 55, а значение левого = 44. После сдвига числа 55 на 8 бит влево у тебя получится число 5500. А после прибавления 44 получится число 5544. Первые две цифры означают правый канал, а вторые две - левый (может наоборот, я не помню :)).

Ек!

Вот и все, а ты боялась:). Но, прежде чем жать "F9", тебе надо сделать еще кое-что. Найди в самом начале исходного текста слово "uses" и допиши туда слово "mmsystem". У тебя должно получиться нечто похожее на:

uses

mmsystem, Windows, Messages, ....

Если ты этого не сделаешь, то Delphi не сможет запустить твою прогу и будет ругаться на waveOutSetVolume. А вот теперь запусти прогу и открой какой-нибудь WAVE файл. Попробуй подвигать свои TrackBar-ы - круто? Несколько строчек кода и пять минут вождения мышью - твой крутой проигрыватель готов. Хотя меня просили научить тебя проигрывать только музыкальные диски, я уверен - Holod не тронет мое достоинство. Подключай к компьютеру колонки помощнее и врубай музон, чтоб тем, кто за стеной, даже памперсы не помогли. Удачи тебе.

Назад на стр. 004-094-2  Содержание  Вперед на стр. 004-094-4

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001