播放音乐的线程,如何停止播放?在线等待(100分)

  • 主题发起人 主题发起人 sheian
  • 开始时间 开始时间
S

sheian

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了个程序,程序启动时自动播放背景音乐,当点击一个Button时,自动播放一个视频文件,此时背景音乐自动关闭,播放背景音乐我用的是线程,但不知道怎么在不关闭主程序时,去关闭背景音乐,有哪位大哥哥帮帮我啊?
主程序:
..............
procedure TFrmFirst.FormShow(Sender: TObject);
begin
....
ps := TPlaySound.Create(False);

end;

procedure TFrmFirst.Label10Click(Sender: TObject);
begin
ps.Terminate;
//有问题,关不掉线程
//其它事件
end;

以下为线程:
unit PlaySoundThread;
interface
uses
Classes, Mmsystem;
type
TPlaySound = class(TThread)
private
{ Private declarations }
protected
procedure Execute;
override;
procedure Play;
end;

implementation
{ TPlaySound }
procedure TPlaySound.Play;
begin
PlaySound('./video/play.wav',1,SND_ASYNC);
end;

procedure TPlaySound.Execute;
begin
Synchronize(Play);
end;

end.
 
既然在另一个线程,用同步方式播放试试看
 
楼上的大哥,同步方式播放怎么做?是不是不用线程,而是在主程序中直接播放音乐呢?
 
用线程播放时用同步方式:PlaySound('./video/play.wav',1,SND_ASYNC);SND_ASYNC是异步,改为同步看看
 
不好意思,我对线程不熟悉,huasoft_hth大哥能否教我怎么用同步?
 
to sheian
PlaySound(0,1,SND_ASYNC)
 
to huasoft_hth:
用PlaySound(0,1,SND_ASYNC),怎么知道播放哪个音乐文件啊?
 
声明个全局变量。在线程中设置如果全局变量为false 则停止。主程序控制全局变量为true 或 false
 
这个问题没有人能回答吗?
怎么没人回答了呢?
 
to sheian
PlaySound(0,1,SND_ASYNC)是停止播放音乐
 
后退
顶部