Thema: Delphi Bass.dll in TThread

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#4

Re: Bass.dll in TThread

  Alt 30. Nov 2007, 09:50
self.terminate solltest du tunlichst unterlassen.
Verwende dafür removesync der bass-api

Außerdem wird die callback durch Bass_SYNC_END nicht beendet
sondern lediglich wie bei dir die function @EndSync aufgerufen wenn der Song beendet wurde.

Dort kannst du dann festlegen über 'user' ob du die callback beenden oder
den nächsten Titel abspielen willst.

Sample

Delphi-Quellcode:
interface
....
const
  um_MusicEnd = wm_User + 400;

TfrmMain = class(TForm)
  private
    EndSync : HSync;
    procedure MusicEnd(var Msg: TMessage); message um_MusicEnd;
end;

implementation

procedure SyncProc(Handle: HSync; Channel, Data: DWORD; User: DWORD); stdcall;
begin
  case User of
    1:
    begin
      PostMessage(frmMain.Handle, um_MusicEnd, 0, 0);
    end;
  end;
end;

procedure TfrmMain.btnPlayClick(Sender: TObject);

begin
  EndSync := Bass_ChannelSetSync(Stream, Bass_SYNC_END, 0, @SyncProc, 1);
end;

procedure TfrmMain.MusicEnd(var Msg: TMessage);
begin
  //hier rein was passieren soll ....
end;
gruss Emil
  Mit Zitat antworten Zitat