Ruby+WindowsでGUIプログラミング

VisualuRubyがそこはかとなく使いづらかったので、SWinを使って自前で変態的なライブラリ作ってます。
ってかSWinちょうべんり。VRubyいらないんじゃね?

とりあえずできてるとこまでのご報告。

最小のスクリプト

require "ruwin"
Ruwin::Window.new

正方形のウィンドウを開きます。実行結果はつまらないので割愛。

Windowのサブクラスを作ってボタンを配置

require "ruwin"

class MyWindow < Ruwin::Window
  caption "Button Click - Sample"
  width  225
  height 75
  
  Button "button" do
    left    5
    top     5
    width   200
    height  30
    caption "Click"
  end
  
  def button_clicked
    button.caption = "Yes, Clicked!"
  end
end

MyWindow.new

実行結果:クリック前

実行結果:クリック後

Editコントロールを配置

require "ruwin"

class MyWindow < Ruwin::Window
  caption "EditField - Sample"
  width  215
  height 235
  
  add_control EditField::Multiline, "edit" do
    caption "はてなハイク - お絵かきも楽しめるミニブログ"
    left    0
    top     0
    width   200
    height  200
  end
end

MyWindow.new

実行結果:

既知の問題点

「Windowのサブクラスを作ってボタンを配置」でのButtonにブロックが付いたものは、実はWindow.Buttonというメソッドで、中身はWindow.add_control Buttonのシンタックスシュガー。
だが、EditFIeld::Multilineのようなネームスペースに見えるメソッドは作成*1できないのでadd_controlを直接使っている。

現状

まだクラス、イベントの実装がほんの一握りだけなので実用には耐えられないと思いますが、CodeRepos上で開発していますので、何かの参考に覗いてみたい方はぜひどうぞ。

*1:正確には実行