问题描述: 我用线程来播放视频文件,不知道怎样来引用或控制线程中的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;

解决方案 »

  1.   

    想不明白,有TThread类不用,非得用createthread,你可以直接把你播放的封装成一个类就可以,然后发布MEDIAPLAYER属性。
      

  2.   

    谢谢楼上的回复.不过用TTHREAD是不行的,我是用于VOD播放视频的,用createthread调用MEDIAPLAYER控件比较好. 现在就是不知怎样控制线程中的MEDIAPLAYER.让它STOP\PAUSE\RENUME\NEXT等.