|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Mp3 Player в Delphi7 |
|
Delphi - Mp3 Player в Delphi7
|
Новый участник Сообщения: 28 |
Профиль | Сайт | Отправить PM | Цитировать Пишу на Delphi7 (и 3Ds Max) проигрыватель MP3.
Использую как основу компонент Mediaplayer(полностью самому написать пока нереально - всего пол года прошло как начал прогать, а ведь ещё учёба...) Друзья, когда увидели мою прогу сказали, что предпочтут её Winamp'у! В 3Ds Max6 сделал 3D катушечный мафон, который реагирует на перемотку, конец песни(обрыв ленты) и т.д. Всё работает в общем нормально. Трамбла произошла когда начал создавать плей лист. В общем я его создал, но если вы бы увидили "код" отвечающий за его работу, то упали бы в обморок... Создавал на основе компонента ListView панели Win32. Песни в него загружаются, но если щелкнуть не по ней, а рядом с ней всё зависает. И как сделать, чтобы по окончании песни сама включалась следующая? По-жа-луй-ста покажите на примере. А как сделать чтобы регулировалась громкость? Может киданёте ссылочку или посоветуете книгу? Спасибо!:beer: |
|
Отправлено: 16:04, 20-02-2005 |
Линуксоид-стакановец Сообщения: 2391
|
Профиль | Отправить PM | Цитировать Попробуй это код для громкости
var VolumeBar: TProgressBar; cmdMinVolume: TSpeedButton; cmdMaxVolume: TSpeedButton; procedure TMainForm.FormCreate(Sender: TObject); var i: integer; MixLine: TMixerLine; MixLineCtrl: TMixerLineControls; MixCtrl: TMixerControl; begin inherited; MixerOpen(@hmix, 0, Handle, 0, MIXER_OBJECTF_MIXER or CALLBACK_WINDOW); MixerGetDevCaps(0, @mixcaps, SizeOf(MixCaps)); for I := 0 to MixCaps.cDestinations - 1 do begin Mixline.dwDestination := I; Mixline.cbStruct := SizeOf(Mixline); MixerGetLineInfo(hmix, @mixline, MIXER_GETLINEINFOF_DESTINATION); if Mixline.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS then break; end; if Mixline.dwComponentType <> MIXERLINE_COMPONENTTYPE_DST_SPEAKERS then begin ShowMessage('Микшер не найден !'); svEnable := False; Exit; end else svEnable := True; MixLineCtrl.cbStruct := SizeOf(MixLineCtrl); MixLineCtrl.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME; MixLineCtrl.dwLineID := MixLine.dwLineID; MixLineCtrl.cControls := 2; MixLineCtrl.cbmxctrl := Sizeof(MixCtrl); MixCtrl.dwControlType := MIXERCONTROL_CONTROLTYPE_VOLUME; MixLineCtrl.pamxctrl := @MixCtrl; MixerGetLineControls(hmix, @mixlinectrl, MIXER_GETLINECONTROLSF_ONEBYTYPE); VolumeID := MixCtrl.dwControlID; VolMin := MixCtrl.Bounds.dwMinimum; VolMax := MixCtrl.Bounds.dwMaximum; Details.cbStruct := Sizeof(Details); Details.dwControlID := VolumeID; Details.cChannels := 1; Details.cMultipleItems := 0; Details.cbDetails := SizeOf(Valdets); Details.paDetails := @valdets; MixerGetControlDetails(hmix, @details, MIXER_GETCONTROLDETAILSF_VALUE); CurVolume := Valdets.dwValue; VolumeBar.Min := VolMin; VolumeBar.Max := VolMax; VolumeBar.Position := CurVolume; procedure TMainForm.VolumeBarMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: integer); begin if not svEnable then exit; X := Round(X / VolumeBar.Width * (VolumeBar.Max - VolumeBar.Min) + VolumeBar.Min); VolumeBar.Position := X; Details.cbStruct := Sizeof(Details); Details.dwControlID := VolumeID; Details.cChannels := 1; Details.cMultipleItems := 0; Details.cbDetails := Sizeof(Valdets); Details.paDetails := @Valdets; if X > 4000 then Valdets.dwValue := VolumeBar.Position else Valdets.dwValue := 0; MixerSetControlDetails(hmix, @details, MIXER_SETCONTROLDETAILSF_VALUE); end; procedure TMainForm.cmdMinVolumeClick(Sender: TObject); begin if not svEnable then Exit; VolumeBar.Position := VolumeBar.Position - (VolumeBar.Max - VolumeBar.Min) div 50; if VolumeBar.Position < VolumeBar.Min then VolumeBar.Position := VolumeBar.Min; Details.cbStruct := SizeOf(Details); Details.dwControlID := VolumeID; details.cChannels := 1; Details.cMultipleItems := 0; Details.cbDetails := SizeOf(Valdets); Details.paDetails := @Valdets; if VolumeBar.Position > 4000 then valdets.dwValue := VolumeBar.Position else valdets.dwValue := 0; MixerSetControlDetails(hmix, @details, MIXER_SETCONTROLDETAILSF_VALUE); end; procedure TMainForm.cmdMaxVolumeClick(Sender: TObject); begin if not svEnable then Exit; VolumeBar.Position := VolumeBar.Position + (VolumeBar.Max - VolumeBar.Min) div 50; if VolumeBar.Position > VolumeBar.Max then VolumeBar.Position := VolumeBar.Max; Details.cbStruct := SizeOf(Details); Details.dwControlID := VolumeID; Details.cChannels := 1; Details.cMultipleItems := 0; Details.cbDetails := SizeOf(Valdets); Details.paDetails := @Valdets; if VolumeBar.Position > 4000 then Valdets.dwValue := VolumeBar.Position else Valdets.dwValue := 0; MixerSetControlDetails(hmix, @details, MIXER_SETCONTROLDETAILSF_VALUE); end; end; |
------- Отправлено: 16:18, 20-02-2005 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Flash - Проблемы с USB Sony digital mp3 player... | SANIOK_AV | Накопители (SSD, HDD, USB Flash) | 2 | 25-09-2009 13:26 | |
Разное - Проблема с TakeMS MP3 Player | John1992on | Прочее железо | 7 | 29-03-2009 04:19 | |
MP3-Player iRiver | Milk | Мобильные ОС, смартфоны и планшеты | 7 | 06-11-2004 15:23 | |
USB - MP3 Player (FAT32) | Guest | Общий по FreeBSD | 27 | 31-08-2004 12:14 |
|