问题描述: 我用线程来播放视频文件,不知道怎样来引用或控制线程中的MEDIAPLAYER? 让其暂停\播放\停止\全屏?
请各位不吝赐教.谢谢!主要代码如下:function threadfunc(panel:tpanel):longint;stdcall; //定义播放视频文件的线程函数
begin
mp:=tmediaplayer.create(nil);
mp.Close;
mp.AutoOpen:=false;
mp.display:=panel;
mp.parent:=form1;
mp.filename:='song.mpg';
mp.open;
mp.play;
mp.Displayrect:=Panel.clientrect; //窗口自动调整.让视频画面自动适应窗口大小.
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s:dword;
begin
with Mediaplayer1 do
begin
FileName:=myfile; //myfile前面有声明.
open;
createthread(nil,0,@threadfunc,form1.panel2,0,s); 创建线程,并让其播放区域在PANEL2.
mediaplayer1.Display:=form1.Panel1;
mediaplayer1.Displayrect:=form1.Panel1.clientrect; //窗口自动调整.
play;
end;
end;
procedure TForm1.Panel2Click(Sender: TObject);
begin
if I mod 2 <> 0 then
begin
form1.Panel2.height:=screen.height;
form1.Panel2.width:=screen.width; //PANEL2会全屏,但不知怎样让播放画面也一起全屏.
// mp.Display:=form1.Panel2;
// mp.Displayrect:=form1.Panel2.clientrect; //窗口自动调整.不知道怎样来引用线程中的MEDIAPLAYER.
end
else
begin
form1.Panel2.height:=241; // PANEL1原位置
form1.Panel2.width:=305; // PANEL1原位置
end;
I:=I+1; //用I除2来判断是第几次点击窗口,第一次把播放窗口全屏,第二次把播放窗口还原
end;
请各位不吝赐教.谢谢!主要代码如下:function threadfunc(panel:tpanel):longint;stdcall; //定义播放视频文件的线程函数
begin
mp:=tmediaplayer.create(nil);
mp.Close;
mp.AutoOpen:=false;
mp.display:=panel;
mp.parent:=form1;
mp.filename:='song.mpg';
mp.open;
mp.play;
mp.Displayrect:=Panel.clientrect; //窗口自动调整.让视频画面自动适应窗口大小.
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s:dword;
begin
with Mediaplayer1 do
begin
FileName:=myfile; //myfile前面有声明.
open;
createthread(nil,0,@threadfunc,form1.panel2,0,s); 创建线程,并让其播放区域在PANEL2.
mediaplayer1.Display:=form1.Panel1;
mediaplayer1.Displayrect:=form1.Panel1.clientrect; //窗口自动调整.
play;
end;
end;
procedure TForm1.Panel2Click(Sender: TObject);
begin
if I mod 2 <> 0 then
begin
form1.Panel2.height:=screen.height;
form1.Panel2.width:=screen.width; //PANEL2会全屏,但不知怎样让播放画面也一起全屏.
// mp.Display:=form1.Panel2;
// mp.Displayrect:=form1.Panel2.clientrect; //窗口自动调整.不知道怎样来引用线程中的MEDIAPLAYER.
end
else
begin
form1.Panel2.height:=241; // PANEL1原位置
form1.Panel2.width:=305; // PANEL1原位置
end;
I:=I+1; //用I除2来判断是第几次点击窗口,第一次把播放窗口全屏,第二次把播放窗口还原
end;
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货