2012-05-01 4 views
1

私はMplayerビデオをGtkDrawingAreaに再生する必要があるGtk2アプリケーションを作成しています。私が知ることから、GtkDrawingAreaのXIDを見つけてこれをMplayerのパラメータとして渡すことができれば可能です。しかし、私は以下のコードスニペットを使用しています。私は、アプリケーションを実行するとGtk2のXIDを取得する方法Mplayerを埋め込むためのGtkDrawingArea

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を得るための適切な方法は何ですか?どんな助けでも大歓迎です。

答えて

2

問題が見つかりました。私は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); 
+0

回答ありがとうございます。キメラ。助けて頂きました。 Windowsの場合、 'GDK_WINDOW_HWND(GTK_WIDGET(video_window) - >ウィンドウ)'が働いていました。 – fapw

+0

@fapwようこそ。私は他人に助けとなるものを提供することができてうれしいです。 – Chimera

+0

こんにちは@キメラ。あなたがgtk_drawing_areaでビデオを見せてくれたら、私に教えてください。私はそれに困難があるので、頼んでいる。ありがとう。 – fapw

関連する問題