{******** unit1.pas ********} unit unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, FileCtrl, MPlayer, MMSystem, Spin, ComCtrls; type TForm1 = class(TForm) MediaPlayer1: TMediaPlayer; DriveComboBox1: TDriveComboBox; DirectoryListBox1: TDirectoryListBox; FileListBox1: TFileListBox; Panel1: TPanel; CheckBox1: TCheckBox; GroupBox2: TGroupBox; TrackBar1: TTrackBar; procedure FileListBox1DblClick(Sender: TObject); procedure FileListBox1Click(Sender: TObject); procedure MediaPlayer1Click(Sender: TObject; Button: TMPBtnType; var DoDefault: Boolean); procedure FormCreate(Sender: TObject); procedure MediaPlayer1Notify(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); procedure TrackBar1Change(Sender: TObject); function GetTrackBar: integer; private { Private declarations } public { Public declarations } end; var Form1: TForm1; pCurrentVolumeLevel: PDWord; CurrentVolumeLevel: DWord; VolumeControlHandle: hWnd; implementation {$R *.DFM} procedure TForm1.FileListBox1DblClick(Sender: TObject); begin if checkbox1.checked then mediaplayer1.DisplayRect := Rect(0,0, Panel1.Width, Panel1.Height); mediaplayer1.play; end; procedure TForm1.FileListBox1Click(Sender: TObject); begin mediaplayer1.filename := FileListBox1.items[filelistbox1.itemindex]; mediaplayer1.open; end; procedure TForm1.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType; var DoDefault: Boolean); begin case Button of btPlay : if checkbox1.checked then mediaplayer1.DisplayRect := Rect(0,0, Panel1.Width, Panel1.Height); end; end; procedure TForm1.FormCreate(Sender: TObject); begin DirectoryListBox1.Directory := 'd:\sound'; mediaplayer1.notify := true; New(pCurrentVolumeLevel); end; procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin Panel1.refresh; with Mediaplayer1 do if NotifyValue = nvAborted then begin filename := FileListBox1.items[filelistbox1.itemindex]; open; end; end; procedure TForm1.FormDestroy(Sender: TObject); begin dispose(pCurrentVolumeLevel); end; function TForm1.GetTrackBar: integer; begin result := 65535 div Trackbar1.max; end; procedure TForm1.FormShow(Sender: TObject); begin VolumeControlHandle := FindWindow('Volume Control', nil); WaveOutGetVolume(VolumeControlHandle, pCurrentVolumeLevel); CurrentVolumeLevel := pCurrentVolumeLevel^; Trackbar1.position := LoWord(CurrentVolumeLevel) DIV GetTrackBar; end; procedure TForm1.TrackBar1Change(Sender: TObject); begin CurrentVolumeLevel := Trackbar1.position * GetTrackBar shl 16; CurrentVolumeLevel := CurrentVolumeLevel + (Trackbar1.position * GetTrackBar); if WaveOutSetVolume(VolumeControlHandle, CurrentVolumeLevel) <> 0 then ShowMessage('Cannot adjust Volume.'); end; end. {********** unit1.dfm *********} object Form1: TForm1 Left = 202 Top = 109 Width = 402 Height = 321 ActiveControl = DriveComboBox1 BorderIcons = [biSystemMenu] Caption = 'Mediaplayer Example - Created using Delphi 2.0' Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] Icon.Data = { 0000010001002020100000000000E80200001600000028000000200000004000 0000010004000000000080020000000000000000000000000000000000000000 0000000080000080000000808000800000008000800080800000C0C0C0008080 80000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF008888 888888888888888888888888888888888888888888880000FEEFEFF000088888 8888888888880000FEEFEFF0000888888888888888880770EFFEFEE070088888 8888888888880000FEEFEFF00008888888888888888807700000000070088888 888888888888077000000000700888888888888888880000FFFFFFF000088888 8888888888880770EFFEFEE0700888888888888888880000FEEFEFF000088888 8888888888880000FEEFEFF0000888888888888888880770EFFEFEE070088888 888888888888000000000000000888808888888888880770FFFFFFF070088880 8888888888880770FFFFFFF0700880000888888088880000FEEFEFF000088880 0008800008880770EFFEFEE0700888888008888000080000FEEFEFF000088888 8008888000080000FEEFEFF00008888880088888800807700000000070088888 8008888880080000FFFFFFF0000888888008888880080770EFFEFEE070088888 8008888880080770EFFEFEE0700888888008888880080000FEEFEFF000088888 8008888880088888888888888888888880000000000888888888888888888888 8000000000088888888888888888888880033333300888888888888888888888 8000000000088888888888888888888888888888888888888888888888888888 8888888888888888888888888888888888888888888888888888888888880000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000} OnCreate = FormCreate OnDestroy = FormDestroy OnShow = FormShow PixelsPerInch = 96 TextHeight = 13 object MediaPlayer1: TMediaPlayer Left = 152 Top = 240 Width = 141 Height = 33 VisibleButtons = [btPlay, btPause, btStop, btPrev, btBack] Display = Panel1 ParentShowHint = False ShowHint = True TabOrder = 0 OnClick = MediaPlayer1Click OnNotify = MediaPlayer1Notify end object DriveComboBox1: TDriveComboBox Left = 0 Top = 0 Width = 145 Height = 19 DirList = DirectoryListBox1 TabOrder = 1 end object DirectoryListBox1: TDirectoryListBox Left = 0 Top = 22 Width = 145 Height = 114 FileList = FileListBox1 ItemHeight = 16 TabOrder = 2 end object FileListBox1: TFileListBox Left = 0 Top = 139 Width = 145 Height = 141 ItemHeight = 13 Mask = '*.wav;*.avi' MultiSelect = True TabOrder = 3 OnClick = FileListBox1Click OnDblClick = FileListBox1DblClick end object Panel1: TPanel Left = 152 Top = 8 Width = 241 Height = 225 TabOrder = 4 end object CheckBox1: TCheckBox Left = 218 Top = 275 Width = 76 Height = 17 Caption = 'Stretch AVI' State = cbChecked TabOrder = 5 end object GroupBox2: TGroupBox Left = 296 Top = 234 Width = 97 Height = 53 Caption = 'Volume' TabOrder = 6 object TrackBar1: TTrackBar Left = 2 Top = 11 Width = 93 Height = 34 Max = 26 Orientation = trHorizontal ParentShowHint = False Frequency = 1 Position = 0 SelEnd = 0 SelStart = 0 ShowHint = True TabOrder = 0 TickMarks = tmBoth TickStyle = tsAuto OnChange = TrackBar1Change end end end