home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Personal Computer World 1995 May
/
pcw-0595.bin
/
demos
/
databeck
/
wsounds
/
setup.dir
/
wswsrc.exe
/
WSW.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-12-02
|
21KB
|
833 lines
{
Wicked Sounds for Windows
A Wave Database and Event Handler for Windows
by
Axel Stolz and Thorsten Petrowski
Copyright 1992 Abacus | Data Becker GmbH
Internationalized version 1.0 TP 10/92
American version 1.0 12/92
}
program WickedSoundsForWindows;
uses DataObj,Strings, WinTypes, WinProcs, WObjects, WinDOS, Win31, ShellAPI,
MMSystem, CommDlg, BWCC,PlayDLG,RecDLG,ScanDLG,TakeDLG,BrwsDLG,PPlayDLG,
AboutDlg, WaveUtil, DiskDlg, SaveDlg, EventDlg, ScrnsDlg;
{!!!}
{$M 16384, 8192}
{$I-,S-}
{$R TAPE}
{$R WswHook}
{ Resource IDs }
CONST
DN_DeckDlg = 'TWaveDeckDlg';
ID_RECORD = 300;
ID_REWIND = 301;
ID_PLAY = 302;
ID_PROGPLAY= 303;
ID_CUE = 304;
ID_STOP = 305;
ID_POWER = 310;
ID_SWITCH = 311;
ID_MESS = 312;
ID_TRACK = 313;
ID_NAME = 314;
ID_Browse = 315;
ID_About = 316;
ID_Single = 320;
ID_Prog = 321;
ID_Database= 322;
ID_FirstOne= 323;
ID_Last = 324;
ID_Repeat = 327;
ID_Pause = 325;
ID_Events = 329;
ID_ScrnSve = 330;
const
DeviceID : Word = 0;
SinglePlay = 0; { Represents single file play }
PListPlay = 1; { Represents playlist play }
DataPlay = 2; { Represents database play }
Var IsRunning : Boolean;
Paused : Boolean;
TimerGoing : Boolean;
WaveRatio : Integer;
WaveLength : Longint;
Type
TFilename = array[0..255] of Char;
type
PMCI_Open_Parms = ^TMCI_Open_Parms;
TMCI_Open_Parms = record
dwCallback: Longint;
wDeviceID: Word;
wReserved0: Word;
lpstrDeviceType: PChar;
lpstrElementName: PChar;
lpstrAlias: PChar;
end;
type
PMCI_Load_Parms = ^TMCI_Load_Parms;
TMCI_Load_Parms = record
dwCallback: Longint;
lpfilename: PChar;
end;
TYPE
PWaveDeckDlg = ^TWaveDeckDlg;
TWaveDeckDlg = object(TDlgWindow)
FileName: ARRAY[0..fsPathName] OF Char;
PlayMode : Integer;
Playing,isdd,Virgin,Rep,FirstOne,LastOne : BOOL;
ActTrack,ddcount,ddmax : Integer;
ddhandle : THandle;
RepeatOne : BOOL;
WDummyRec : WAVEDataType;
MciOpenParm : TMCI_Open_Parms;
MciGenParm : TMCI_Generic_Parms;
MciPlayParm : TMCI_Play_Parms;
MciStatusParm: TMCI_Status_Parms;
MciSetParm : TMCI_Set_Parms;
AppIcon : HIcon;
PowerCheck : PCheckBox;
constructor Init (AParent: PWindowsObject; ATitle: PChar);
procedure SetupWindow; virtual;
Procedure HandleProgSwitch;
Procedure HandleRepeat (Var Msg: TMessage); virtual ID_First + ID_Repeat;
Procedure HandleFirst (Var Msg: TMessage);virtual ID_First + ID_FirstOne;
Procedure HandleLast (Var Msg:TMEssage);virtual ID_First + ID_Last;
PROCEDURE HandlePlay(VAR Msg : TMessage);virtual ID_First + ID_Play;
PROCEDURE HandleStop(Var Msg : TMessage);virtual ID_First + ID_Stop;
PROCEDURE HandleRecord(VAr Msg: TMessage);virtual ID_First + ID_Record;
PROCEDURE HandleSearch(VAr Msg: TMessage);virtual ID_First + ID_Progplay;
PROCEDURE HandlePower (Var Msg: TMessage); virtual ID_First + ID_Power;
PROCEDURE HandleCue (Var Msg: TMessage); virtual ID_First + ID_Cue;
PROCEDURE HandleRewind (Var Msg: TMessage);virtual ID_First + ID_Rewind;
PROCEDURE HandleBrowse (Var Msg: TMessage);virtual ID_First + ID_Browse;
Procedure HandleSingle (Var Msg: TMessage);virtual ID_First + ID_Single;
Procedure HandleProg (Var Msg: TMessage);virtual ID_First + ID_Prog;
Procedure HandleData (Var Msg: TMessage);virtual ID_First + ID_DataBase;
PROCEDURE DisplayData (Data : WaveDataType);
procedure StopWave; virtual;
procedure GetWindowClass(var AWndClass: TWndClass); virtual;
function GetClassName: PChar; virtual;
procedure MciNotify(var Msg: TMessage);
virtual wm_First + mm_MCINotify;
procedure SoundPlay(ElementName: PChar);
procedure PlayStuff (ElementName:PCHar);
procedure SoundPause (Var Msg:TMessage); virtual id_first + id_pause;
procedure GetDeviceInfo;
procedure Play;
procedure WMDropFiles(var Msg: TMessage); virtual wm_first + wm_dropfiles;
Procedure DropNext;
Procedure HandleAbout (Var Msg : TMessage);virtual id_First + id_About;
Procedure HandleEvents (Var Msg : TMessage);virtual id_First + id_Events;
Procedure HandleScrnSve (Var Msg : TMessage);virtual id_First + id_ScrnSve;
Procedure CloseSound;
procedure WMQueryDragIcon(var Msg: TMessage);
virtual wm_First + wm_QueryDragIcon;
end;
{ TWaveDeck is Main Object }
TWaveDeckApp = object(TApplication)
procedure InitMainWindow; virtual;
Destructor Done;virtual;
end;
procedure TWaveDeckDlg.WMDropFiles(var Msg: TMessage);
Var DropPt : TPoint;
begin
ddhandle := Msg.WParam;
DragQueryPoint(ddhandle, DropPt);
ddmax := DragQueryFile(ddhandle, Word(-1), nil, 0);
ddcount := 0;
isdd := TRUE;
MciNotify (Msg);
end;
PROCEDURE TWaveDeckDlg.DropNext;
Var
DroppedName: TFilename;
DropPt : TPoint;
Begin
IF ddcount < ddmax then
Begin
DragQueryFile (ddhandle,ddcount,DroppedName,SizeOf(DroppedName));
Inc (ddcount,1);
SoundPlay (DroppedName);
End
Else
Begin
DragFinish (ddhandle);
isdd := FALSE;
End;
End;
{ TWaveDeckDlg }
constructor TWaveDeckDlg.Init(AParent: PWindowsObject; ATitle: PChar);
begin
{TDialog.Init(AParent, ATitle);}
TDlgWindow.Init(AParent, ATitle);
ActTrack := 0;
if WaveOutGetNumDevs = 0 then
begin
BWCCMessageBox(HWindow, 'No WAV playback device available', 'Error',mb_OK or mb_IconStop);
PostQuitMessage(0);
end;
PowerCheck := New(PCheckBox, InitResource(@self ,ID_Power));
FirstOne := FALSE;
LastOne := FALSE;
RepeatOne := FALSE;
PlayMode := SinglePlay;
Rep := FALSE;
virgin := TRUE;
DeviceID :=0 ;
isdd := FALSE;
Playing := FALSE;
EventsActive := GetProfileInt ('WSW_Captain_Hooks_Log','EventsActive',bf_Unchecked);
IF EventsActive = bf_Unchecked THEN HookInstall(FALSE)
ELse HookInstall(True);
end;
{ Handle Repeat/Switch }
procedure TWaveDeckDlg.HandleRepeat (Var Msg: TMEssage);
Begin
IF rep = FALSE Then
Begin
rep := TRUE;
End
Else
Begin
rep := FALSE;
End;
End;
procedure TWaveDeckDlg.HandleSingle (Var Msg: TMessage);
Begin
HandleStop(Msg);
CheckRadioButton (HWindow,ID_Single,ID_DataBase,ID_Single);
PlayMode := SinglePlay;
HandleProgSwitch;
End;
procedure TWaveDeckDlg.HandleProg (Var Msg: TMessage);
Begin
HandleStop(Msg);
CheckRadioButton (HWindow,ID_Single,ID_DataBase,ID_Prog);
PlayMode := PListPlay;
HandleProgSwitch;
End;
procedure TWaveDeckDlg.HandleData (Var Msg: TMessage);
Begin
HandleStop(Msg);
CheckRadioButton (HWindow,ID_Single,ID_DataBase,ID_DataBase);
PlayMode := DataPlay;
HandleProgSwitch;
End;
{ Get information about WAV playback device }
procedure TWaveDeckDlg.GetDeviceInfo;
var
WOutCaps: TWaveOutCaps;
begin
if WaveOutGetDevCaps(DeviceID, @WOutCaps, SizeOf(WOutCaps)) <> 0 then
MessageBox(HWindow, 'GetDevCaps error', 'Error', mb_OK);
end;
procedure TWaveDeckDlg.HandleStop (var Msg:TMessage);
Begin
IF paused = TRUE Then SoundPause (Msg);
LastOne := TRUE;
mciSendCommand(DeviceID, mci_Close, mci_Wait, Longint(@MciGenParm));
DeviceID := 0;
IsRunning := FALSE;
Playing := FALSE;
END;
procedure TWaveDeckDlg.StopWave;
begin
if DeviceID <> 0 then
begin
mciSendCommand(DeviceID, mci_Stop, mci_Wait, Longint(@MciGenParm));
mciSendCommand(DeviceID, mci_Close, mci_Wait, Longint(@MciGenParm));
IsRunning := FALSE;
end;
end;
{ Stop waveform output and close device }
procedure TWaveDeckDlg.CloseSound;
Var c: Integer;
begin
if DeviceID <> 0 then
begin
MciGenParm.dwCallback := 0;
for c:= 0 to 40 do
Begin
mciSendCommand(DeviceID, mci_Stop, mci_Wait, Longint(@MciGenParm));
End;
mciSendCommand(DeviceID, mci_Close, mci_Wait, Longint(@MciGenParm));
IsRunning := FALSE;
DeviceID := 0;
end;
end;
{ Receives MCI_Notify when MCI_Play is done }
procedure TWaveDeckDlg.MciNotify(var Msg: TMessage);
begin
IF isdd = TRUE Then
Begin
StopWave;
DropNext;
End
Else
Begin
IF Not LastOne then
Begin
StopWave;
IF Not RepeatOne then HandleCue (Msg);
Play;
End
Else
Begin
StopWave;
IF (Playing = TRUE) AND (rep = TRUE) then
Begin
actTrack := 0;
LastOne := FALSE;
IsRunning := FALSE;
HandlePlay (Msg);
End
Else
Begin
IsRunning := FALSE;
RepeatOne := FALSE;
DragAcceptFiles(HWindow, True);
End
End;
RepeatOne := FALSE;
End
end;
Procedure TWaveDeckDlg.HandleFirst (VAr Msg: TMessage);
Begin
ActTrack := 0;
HandleRewind (Msg);
End;
Procedure TWaveDeckDlg.HandleLast (Var Msg: TMessage);
Begin
If PlayMode = PListPlay then ActTrack := WavePlayColl^.Count-1;
IF (PlayMode = DataPlay) or (PlayMode=SinglePlay) then ActTrack := WaveCollect^.Count-1;
HandleCue (Msg);
End;
{ Stop output, or continue }
procedure TWaveDeckDlg.SoundPause (Var Msg: Tmessage);
begin
if isrunning then
Begin
if not Paused then
begin { Pause }
MciGenParm.dwCallback := 0;
mciSendCommand(DeviceID, mci_Pause, mci_Wait, Longint(@MciGenParm));
end
else
begin { Continue }
MciGenParm.dwCallback := 0;
mciSendCommand(DeviceID, mci_Resume, mci_Wait, Longint(@MciGenParm));
end;
Paused := not Paused;
end;
end;
{ Play sound }
procedure TWaveDeckDlg.SoundPlay(ElementName: PChar);
var
Res : Longint;
ErrMsg : array [0..255] of Char;
begin
if (not IsRunning) then
begin
{ MCI APIs to open device and play .WAV file, using notification to close }
MciOpenParm.dwCallback := 0;
MciOpenParm.wDeviceID := DeviceID;
MciOpenParm.wReserved0 := 0;
MciOpenParm.lpstrDeviceType := nil;
MciOpenParm.lpstrElementName := ElementName;
MciOpenParm.lpstrAlias := nil;
if mciSendCommand(DeviceID, mci_Open, (mci_Wait or mci_Open_Element) ,
Longint(@MciOpenParm)) <> 0 then
else
begin
DeviceID := MciOpenParm.wDeviceID;
{ The time format in this demo is in samples }
MciSetParm.dwCallback := 0;
MciSetParm.dwTimeFormat := mci_Format_Samples;
if mciSendCommand(DeviceID, mci_Set, mci_Set_Time_Format,
Longint(@MciSetParm)) <> 0 then
begin
StopWave;
MessageBox(HWindow, 'SetTime error', 'Wicked Sounds for Windows', mb_OK)
end
else
begin
MciPlayParm.dwCallback := HWindow;
MciPlayParm.dwFrom := 0;
MciPlayParm.dwTo := 0;
Res := mciSendCommand(DeviceID, mci_Play, mci_Notify,
Longint(@MciPlayParm));
if Res <> 0 then
begin
mciGetErrorString(Res, ErrMsg, SizeOf(ErrMsg));
MessageBox(HWindow, ErrMsg, 'Wicked Sounds for Windows', mb_OK or mb_IconStop);
StopWave;
end
else
begin
IsRunning := True;
end;
end;
end;
end
else
begin
StopWave;
end;
end;
{ Play }
procedure TWaveDeckDlg.PlayStuff(ElementName: PChar);
var
Res : Longint;
ErrMsg : array [0..255] of Char;
xplay : TMCI_LOAD_PARMS;
begin
if (not IsRunning) then
begin
{ MCI APIs open device and play .WAV file, using notification to close }
xplay.dwCallback := HWindow;
xplay.lpfilename := ElementName;
if mciSendCommand(DeviceID, mci_Load, (mci_Wait or mci_Load_File),
Longint(@xplay)) <> 0 then
Begin
MessageBox(HWindow, 'Sound could not be played back', 'Wicked Sounds for Windows', mb_OK);
End
else
begin
if 1=2 then
begin
StopWave;
MessageBox(HWindow, 'SetTime error', 'Wicked Sounds for Windows', mb_OK)
end
else
begin
MciPlayParm.dwCallback := HWindow;
MciPlayParm.dwFrom := 0;
MciPlayParm.dwTo := 0;
Res := mciSendCommand(DeviceID, mci_Play, mci_Notify,
Longint(@MciPlayParm));
if Res <> 0 then
begin
mciGetErrorString(Res, ErrMsg, SizeOf(ErrMsg));
MessageBox(HWindow, ErrMsg, 'Wicked Sounds for Windows', mb_OK or mb_IconStop);
StopWave;
end
else
begin
IsRunning := True;
end;
end;
end;
end
else
begin
StopWave;
end;
end;
procedure TWaveDeckDlg.SetupWindow;
Var MSg: TMessage;
begin
TDialog.SetupWindow;
DragAcceptFiles(HWindow, True);
StrCopy(WDummyRec.FileName,' - - - - ');
StrCopy(WDummyRec.FileComment,' Play single files');
DisPlayData(WDummyRec);
CheckRadioButton (HWindow,ID_Single,ID_DataBase,ID_Single);
PowerCheck^.SetCheck(1);
AppIcon := LoadIcon(Hinstance, 'LogoIcon2');
end;
{ Return window class name. This name corresponds to the class name
specified for the Convert dialog in the resource file. }
function TWaveDeckDlg.GetClassName: PChar;
begin
GetClassName := 'TWaveDeckDlg';
end;
PROCEDURE TWaveDeckDlg.GetWindowClass (VAR AWndClass : TWndClass);
Var Msg: TMessage;
BEGIN
TDlgWindow.GetWindowClass(AWndClass);
END;
procedure TWaveDeckDlg.WMQueryDragIcon(var Msg: TMessage);
begin
Msg.Result := AppIcon;
end;
PROCEDURE TWaveDeckDlg.HandlePlay (Var MSg:TMessage);
Begin
IF Paused=TRUE then
Begin
SoundPause (Msg);
End
Else
Begin
IF isrunning = FALSE THen
Begin
DragAcceptFiles(HWindow, False);
Dec(ActTrack,1);
LastOne := FALSE;
FirstOne := FALSE;
RepeatOne := FALSE;
MciNotify(Msg);
Playing := TRUE;
End;
End;
End;
PROCEDURE TWaveDeckDlg.HandleAbout(VAR Msg : TMessage);
VAR
LDialog : PAboutDlg;
BEGIN
LDialog := New(PAboutDlg, Init(@self, DN_AboutDlg));
IF Application^.ExecDialog(LDialog) = ID_Ok THEN
BEGIN END;
END;
PROCEDURE TWaveDeckDlg.HandleEvents(VAR Msg : TMessage);
VAR
LDialog : PEventDlg;
BEGIN
LDialog := New(PEventDlg, Init(@self, DN_EventDlg));
IF Application^.ExecDialog(LDialog) = ID_Ok THEN
BEGIN END;
END;
PROCEDURE TWaveDeckDlg.HandleScrnSve(VAR Msg : TMessage);
VAR
LDialog : PScreenDlg;
BEGIN
LDialog := New(PScreenDlg, Init(@self, DN_ScreenDlg));
IF Application^.ExecDialog(LDialog) = ID_Ok THEN
BEGIN END;
END;
{ ---- Play on status SINGLEPLAY, PLISTPLAY DATABASEPLAY! ---- }
PROCEDURE TWaveDeckDlg.Play;
VAR
LDialog : PPlayDialog;
Puffer : ARRAY[0..12] OF CHAR;
Chicken : WaveDataType;
TPDummy : Array[0..137] OF CHAR;
procedure PlaySub(TempNr : Integer);
VAR
TDummy : Array[0..255] OF Char;
MDummy : Array[0..80] OF Char;
DDummy : Array[0..2] OF Char;
Sub1,Sub2,Typ,Message : Integer;
DDialog : PDiskDlg;
TestDlg : Integer;
BEGIN
Message := idOK;
IF PlayMode = DataPlay then
Begin
PWaveData(WaveCollect^.At(TempNr))^.GetData(WaveDummy);
End;
IF PlayMode = PListPlay then
Begin
PWaveData(WavePlayColl^.At(TempNr))^.GetData(WaveDummy);
End;
{--------------------------------------------------------------------}
{----------------------- Play dialog --------------------------------}
DPlayObj := New(PDiskPlay,Init(@self));
DPlayObj^.DiskPlayDlg(WaveDummy, Message);
DPlayObj^.Done;
DiskDummy[0] := WaveDummy.DiskDrive;
DiskDummy[1] := #0;
StrCat(DiskDummy, ':');
StrCat(DiskDummy,WaveDummy.PathName);
StrCat(DiskDummy,WaveDummy.FileName);
IF (Message = idOK) THEN BEGIN
SoundPlay(DiskDummy);
END;
END;
BEGIN
IF PlayMode = SinglePlay Then
Begin
StrCopy(TPDummy, RootDir);
StrCat(TPDummy, '*.WAV');
LDialog := New(PPlayDialog, Init(@self, dn_PlayDlg,TPDummy));
IF Application^.ExecDialog(LDialog) = ID_Ok THEN
BEGIN END;
END
Else
Begin
IF PlayMode = PListPlay Then
Begin
IF WavePlayColl^.Count >0 THEN PlaySub(ActTrack);
End;
End;
IF PlayMode = DataPlay Then
Begin
If WaveCollect^.Count > 0 Then PlaySub (ActTrack);
End;
End;
PROCEDURE TWaveDeckDlg.HandleCue (Var Msg:TMessage);
Begin
IF Not Paused THen
Begin
lastOne := FALSE;
RepeatOne := TRUE;
If PlayMode = PListPlay Then
Begin
IF WavePlayColl^.Count > 0 then
Begin
Inc(ActTrack,1);
IF ActTrack >= (WavePlayColl^.Count)-1 then
Begin
LastOne := TRUE;
ActTrack := WavePlayColl^.Count - 1;
End;
PWaveData(WavePlayColl^.At (ActTrack))^.GetData(WDummyRec);
DisplayData (WDummyRec);
End
End
Else
IF PlayMode = DataPlay THEN
Begin
IF WaveCollect^.Count > 0 then
Begin
Inc(ActTrack,1);
IF ActTrack >= (WaveCollect^.Count)-1 then
Begin
LastOne := TRUE;
ActTrack := (WaveCollect^.Count)-1;
End;
PWaveData(WaveCollect^.At (ActTrack))^.GetData(WDummyRec);
DisplayData (WDummyRec);
End
End;
StopWave;
End;
END;
PROCEDURE TWaveDeckDlg.HandleRewind (Var Msg: TMessage);
Begin
IF Not Paused then
Begin
FirstOne := FALSE;
LastOne := FALSE;
RepeatOne := TRUE;
IF PlayMode = PListPlay Then
Begin
IF WavePlayColl^.Count > 0 then
Begin
Dec(ActTrack,1);
IF ActTrack < 0 then
Begin
ActTrack:=0;
FirstOne := TRUE;
End;
PWaveData(WavePlayColl^.At (ActTrack))^.GetData(WDummyRec);
DisplayData (WDummyRec);
End
End
Else
IF PlayMode = DataPlay THEN
Begin
IF WaveCollect^.Count > 0 then
Begin
Dec(ActTrack,1);
IF ActTrack < 0 then
Begin
ActTrack:=0;
FirstOne := TRUE;
End;
PWaveData(WaveCollect^.At (ActTrack))^.GetData(WDummyRec);
DisplayData (WDummyRec);
End;
END;
StopWave;
End;
End;
PROCEDURE TWaveDeckDlg.HandleProgSwitch;
Begin
ActTrack := 0;
IF PlayMode = DataPlay then
Begin
IF WaveCollect^.Count > 0 then
Begin
PWaveData(WaveCollect^.At (ActTrack))^.GetData(WDummyRec);
DisplayData (WDummyRec);
End;
End
Else
IF PlayMode = SinglePlay THEN BEGIN
StrCopy(WDummyRec.FileName,' - - - - ');
StrCopy(WDummyRec.FileComment,' Play single files');
DisPlayData(WDummyRec);
END
ELSE
Begin
IF WavePlayColl^.Count > 0 then
Begin
PWaveData(WavePlayColl^.At (ActTrack))^.GetData(WDummyRec);
DisplayData (WDummyRec);
End
ELSE BEGIN
StrCopy(WDummyRec.FileName,' - - - - ');
StrCopy(WDummyRec.FileComment,' The playlist is empty.');
DisPlayData(WDummyRec);
END;
End;
End;
PROCEDURE TWaveDeckDlg.HandlePower (Var Msg: TMessage);
Var
MDummy : Array[0..100] of Char;
Message : Integer;
MDialog : PSaveDlg;
Begin
CloseSound;
IF DBChanged THEN BEGIN
StrCopy(MDummy, 'Changes made to database since last save.');
StrCat(MDummy,' Save changes now?');
Message := BWCCMessageBox(HWindow,MDummy, 'Wicked Sounds for Windows: Note', MB_OkCancel+mb_IconHand);
IF Message = idOK THEN BEGIN
MDialog := New(PSaveDlg, Init(@self, DN_SaveDlg,1));
IF Application^.ExecDialog(MDialog) = ID_Ok THEN BEGIN
END;
DBChanged := FALSE;
END;
END;
TWaveDeckDlg.Done;
End;
(* Display Data *)
PROCEDURE TWaveDeckDlg.DisplayData (Data : WaveDataType);
Var Out : Array[0..5] of char;
Begin
Str((ActTrack+1):5,Out);
SetDlgItemText(HWindow, id_track,Out);
SetDlgItemText(HWindow, id_Name,Data.Filename);
SetDlgItemText(HWindow, id_Mess,Data.FileComment);
End;
PROCEDURE TWaveDeckDlg.HandleRecord(VAR Msg : TMessage);
VAR
LDialog : PScanDlg;
TkDialog : PTakeDlg;
Puffer : ARRAY[0..12] OF CHAR;
BEGIN
END;
PROCEDURE TWaveDeckDlg.HandleSearch(VAR Msg : TMessage);
VAR
LDialog : PPPlayDlg;
Puffer : ARRAY[0..12] OF CHAR;
BEGIN
LDialog := New(PPPlayDlg, Init(@self, DN_PPlayDlg, WaveCollect));
IF Application^.ExecDialog(LDialog) = ID_Ok THEN
BEGIN
IF WavePlayColl^.Count >0 THEN BEGIN
IF PlayMode = PListPlay THEN BEGIN
ActTrack := 0;
PWaveData(WavePlayColl^.At (ActTrack))^.GetData(WDummyRec);
DisplayData (WDummyRec);
END;
end;
END;
END;
PROCEDURE TWaveDeckDlg.HandleBrowse(VAR Msg : TMessage);
VAR
LDialog : PBrwsDlg;
Puffer : ARRAY[0..12] OF CHAR;
BEGIN
BEGIN
LDialog := New(PBrwsDlg, Init(@self, DN_BrwsDlg, WaveCollect));
IF Application^.ExecDialog(LDialog) = ID_Ok THEN
BEGIN END;
END;
END;
{ TWaveDeckApp }
procedure TWaveDeckApp.InitMainWindow;
begin
MainWindow := New(PWaveDeckDlg, Init(NIL, DN_DeckDlg));
end;
Destructor TWaveDeckApp.Done;
VAR
f : File;
BEGIN
TApplication.Done;
END;
var
WaveDeckApp: TWaveDeckApp;
begin
WaveDeckApp.Init('WaveDeck');
WaveDeckApp.Run;
WaveDeckApp.Done;
end.