Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#8

Re: synchronisation via message und bass?

  Alt 17. Jun 2007, 10:44
Zitat von Marco Steinebach:
Huhu Arnold und Liste,
Eine Frage noch, die hier nicht ganz hingehört: wenn ich doch application.handle übergebe, wo kann ich dann die Message abfangen, die ja dann an die Application, nicht ans Formular geschickt wird?
Viele Grüße
Marco
Tja das geht über Postmessage unabhängig von der Form.

Delphi-Quellcode:
unit Unit1;

interface
uses ....

  Const
  um_MusicEnd = wm_User + 400;

type
  TfrmMain = class(TForm)
  ....
  private
  Procedure MusicEnd(Var Msg:TMessage); Message um_MusicEnd;
  public
end;

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
  If Stream <> 0 then
  Begin
  EndSync := Bass_ChannelSetSync(Stream, Bass_SYNC_END, 0, @SyncProc, 1);
  end
....
end;

Procedure TfrmMain.MusicEnd(Var Msg:TMessage);
Begin

  if ckRandom.Checked then
  begin
   if (playlist.ItemIndex = playlist.Count - 1) then
   begin
     playlist.ItemIndex := 0;
     playlist.Selected[playlist.ItemIndex] := True;

     // play filestream
     btnPlayClick(nil);
     exit;
   end else
     playlist.ItemIndex := playlist.ItemIndex + 1;
     playlist.Selected[playlist.ItemIndex] := True;

     // play filestream
     btnPlayClick(nil);
  end else
    // stop filestream
    btnStopClick(nil);
End;
So in etwa !
Weiss aber nicht ob es das ist was du erwartest
Dabei ist es egal welches Handle bei INIT übergeben wird da Postmessage
dies übernimmt und dann dieses Handle für die Message zuständig ist.

Über User kannst du dann selbst bestimmen welche message du auswerten willst
mußt dann die Case Anweisung nur erweitern.
gruss Emil
  Mit Zitat antworten Zitat