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