[#48450] 1.8.7と1.9.2の挙動の違いについて — "Jun'ya Shimoda" <jun-shimo@...>

下田です。

13 messages 2011/10/09

[ruby-list:48473] Re: Ruby/Gstreamer for Windows

From: ashbb <ashbbb@...>
Date: 2011-10-16 05:50:09 UTC
List: ruby-list #48473
> 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

In This Thread

Prev Next