Вопрос назрел после того, как я познакомился с WlxMplayer от Duble Commander.
- Код: Выделить всё
procedure TForm1.Button3Click(Sender: TObject);
{$IFDEF LCLQT}
begin
xid:= QWidget_winId(QWidgetH(AWidget));
hWidget:= AWidget;
end;
{$ELSE}
var
widget,
mySocket:PGtkWidget; //the socket
lst:PGlist;
begin
lst:=gtk_container_children(GTK_CONTAINER(PGtkwidget(panel1.Handle)));
if lst=nil then exit;
widget := PGtkWidget(lst^.data);
//gtk_vbox_new(FALSE,0);
mySocket := gtk_socket_new();
gtk_container_add (GTK_CONTAINER(widget), mySocket);
gtk_widget_show(mySocket);
gtk_widget_show(widget);
//*****
//gtk_container_add (GTK_CONTAINER (PGtkWidget(Awidget)), widget);
gtk_widget_realize(mySocket);
//gtk_widget_hide(PGtkWidget(AWidget));
{$IFDEF LCLGTK}
xid:=(PGdkWindowPrivate(widget^.window))^.xwindow;
{$ENDIF}
{$IFDEF LCLGTK2}
xid:=GDK_WINDOW_XID(widget^.window);
{$ENDIF}
hWidget:= THandle(widget);
pr:=TProcess.Create(nil);
pr.Options := Pr.Options + [{poWaitOnExit,}poNoConsole{,poUsePipes}]; //mplayer stops if poUsePipes used.
pr.CommandLine:='mplayer' + ' ' + sg.cells[1,sg.row] +' -wid '+IntToStr(xid);
pr.Execute;
end;
Логика кода понятна : ищется id виджета и затем этот id передается в качестве параметра в mplayer.
Но здесь GTK и QT. А как это сделать в MSE ?