wingui.rbの修正とサンプルを豪華に

wingui.rbをDXRubyと連携する場合の問題点や拡張性などを修正、機能も追加。
http://dxruby.sourceforge.jp/files/wingui.zip
・既存のウィンドウに関連付ける場合にサイズを自動で調整したり。
・フォームのイベントメソッドをフォーム名じゃなくform_に固定したり、メニューはmenu_で固定したり。
・ウィンドウを閉じる前に発生するイベントを追加したり。
・メニューの活性化を制御できるようにしたり。
アクセラレータキーに対応したり。
・DXRubyとの連携サンプルを箱並べツールに置き換えてみたり。


箱並べツールは、画面に箱を出してマウスで移動・リサイズができて、範囲でまとめて選択、コピー・切り取り・貼り付け、移動時に他の箱にくっつけて並べやすくする、右クリックによるポップアップメニューなど、実用性はないが普通のアプリにありそうな機能一式を作ってみた。
アンドゥはコードが複雑になるから気が向いたら。
GDIでやると厳しそうな半透明描画もDXRubyでやってるからさくさく。描画系にDXRubyを使うと、どうにも使いにくいGDIとおさらばできるのがよい。今回はウィンドウメッセージはwingui.rb側で受け取って処理するようにしているから、描画以外は普通のWindowsアプリだ。
こういうものを作ったことが無いからテキトーで、アプリ側のコードもwingui.rbの仕様もなんというか、VB?みたいなノリだが、まあ、参考にするも反面教師にするもご自由に、って感じでパブリックドメイン。Ruby1.8系専用。