From: ashbb Date: 2011-10-16T14:50:09+09:00 Subject: [ruby-list:48473] Re: Ruby/Gstreamer for Windows --0015173fef08fe4c2504af640f5c Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit > http://pub.cozmixng.org/~kou/archives/ruby-gnome2-1.0.4.zip ありがとうございます! 早速drawing_area.window.handle試してみました。 box = Gtk::VBox.new drawing_area1 = Gtk::DrawingArea.new drawing_area1.set_size_request(400, 300) drawing_area2 = Gtk::DrawingArea.new drawing_area2.set_size_request(400, 100) box.pack_start(drawing_area1, false, false, 0) box.pack_start(drawing_area2, false, false, 0) window.add(box) drawing_area2.signal_connect('expose-event') do p [drawing_area1.window.handle, drawing_area2.window.handle] p Win32API.new('user32', 'GetForegroundWindow', [], 'N').call video_sink.xwindow_id = drawing_area2.window.handle end これでwin32apiを使わずにvideoストリームをGTK2で作成したウィンドウで 表示することはできました! が、、、残念ながら狙ったエリア(上記の場合drawing_area2)にではなく ウィンドウ全体にvideoが表示されました。 デバッグ文の結果を見ると、 p [drawing_area1.window.handle, drawing_area2.window.handle] p Win32API.new('user32', 'GetForegroundWindow', [], 'N').call 三つとも同じ番号(ハンドル)を表示していました。 どうやらwindow.handleはwindow.xidとは異なり、widget毎のユニークな 番号ではないみたいです。。。 うーん。とすると、win32apiを使わずに済むのでwindow.handleの サポートはとてもありがたいのですが。なんとか、OSSbuildの時のように、 ウィンドウを手でリサイズしてもビデオの画面サイズが変わらないで いてくれるようにはなりませんでしょうか。 ashbb --0015173fef08fe4c2504af640f5c--