gpt4 book ai didi

c - 如何获取 Gtk2 GtkDrawingArea 的 XID 以嵌入 Mplayer

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:58 25 4
gpt4 key购买 nike

我正在编写一个 Gtk2 应用程序,除其他外,它需要让 Mplayer 将视频播放到 GtkDrawingArea 中。据我所知,如果可以找到 GtkDrawingArea 的 XID 并将其作为参数传递给 Mplayer,这是可能的。但是,我正在使用下面的代码片段。

long videoID;                 
GtkWidget *videoWindow = NULL;


/* need be done only once on Namb2Client startup */
InitEGM( &egm );

/* Init GTK+ */
gtk_init( &argc, &argv );

/* Create new GtkBuilder object */
builder = gtk_builder_new();

/* Load UI from file. If error occurs, report it and quit application. */
if( !gtk_builder_add_from_file( builder, "layout.xml", &error ) )
{
g_warning( "%s", error->message );
g_free( error );
return( 1 );
}

/* Get main window pointer from UI */
window = GTK_WIDGET( gtk_builder_get_object( builder, "window1" ) );
gtk_window_position(GTK_WINDOW(window), (GtkWindowPosition)GTK_WIN_POS_CENTER);


MainWnd = GTK_WIDGET( gtk_builder_get_object( builder, "MainWnd" ) );

// Setup area for Mplayer video
videoWindow = gtk_drawing_area_new ();
gtk_widget_set_size_request (videoWindow, 640, 180);
gtk_fixed_put((GtkFixed *)MainWnd, videoWindow, 414, 24 );
gtk_widget_show( videoWindow );
videoID = gdk_x11_drawable_get_xid( videoWindow );
g_printf("XID = %ld\n", videoID);

当我运行应用程序时,出现以下错误:

(egm:3872): Gdk-WARNING **: gdkdrawable-x11.c:952 drawable is not a pixmap or window
XID = 0

获取GtkDrawingArea XID 的正确方法是什么?任何帮助将不胜感激。

最佳答案

发现问题。我需要确保调用 gtk_widget_realize()。如果不这样做,则小部件未完全创建且未分配 X11 XID。

// Setup area for Mplayer video
videoWindow = gtk_drawing_area_new ();
gtk_widget_set_size_request (videoWindow, 640, 180);
gtk_fixed_put((GtkFixed *)MainWnd, videoWindow, 414, 24 );
gtk_widget_realize( videoWindow );
gtk_widget_show( videoWindow );
videoID = GDK_WINDOW_XWINDOW (GTK_WIDGET (videoWindow)->window);
g_printf("XID = %ld\n", videoID);

关于c - 如何获取 Gtk2 GtkDrawingArea 的 XID 以嵌入 Mplayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10403316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com