[English]
===== |
VisualuRuby計画(仮称) |
===== |
カウンタの末尾1桁は
です。Last update 09/02/08
Newest Changes
- swin090208
- ruby-1.9.1対応向け変更
- ruby-1.9.1での利用時は、マルチスレッドでデッドロックが生じる場合があります。そのため、ウインドウを作成したスレッド以外からSendMessage()を呼び出したり、それを呼び出すおそれのある機能を使うことが出来ません。
イラチな人向けの段
能書きはどうでも良いからとにかく欲しい人
参考資料
以上
能書き(かなり古くなっていますが)
いい名前を考え中です。とりあえずは、いかにも「ぱちもん」という名前にしておきます。
もちろん元ネタは○isualBasic。VisualRubyではMSの後塵を拝するようでいやというか、
自分がMSの配下になったようでいやなのでちょっと変えてあります。
これは、それのRuby版が作れないかという計画。とりあえずはWin版としておきます。
Xは全く知らないので。
TkもGTkも知りません。覚えるのがめんどくさいんですよ。
まあ、作る方が面倒といや、そりゃそうなんですが、まだ楽しみがあります。
途中で挫折するかもしれませんが、
公開するといいプレッシャーがかかるのではないかということで計画を公開。
まだバージョンも振ってない状態ですけど(←日付をバージョン代わりにしてます)。
00/01/09現在こんな事
が出来ています(画面取り込み。図中「キーしか効かない」とあるのは当時の状況です。今は問題なし)。
こんなのもあります(00/04/16現在)。
Rubyの実行環境と統合されたエディタは、RubyWinというものがありますので、そっち関係はお任せモードに入ってます。(ああ、ついにこんな事書いちゃった...という気がしないでもない)
などと言っているうちに、RDEが現れました。デバッガとして強力です。本計画のスクリプトもデバッグできます(私の判断)。ページにはmswin版rubyが必要と書いていますが、cygwin版rubyでも動くようです。
本計画のGUIビルダとして、雪見酒氏のFormDesigner(雪見酒氏のページからどうぞ)もお試し下さい。
スクリーンキャプチャ(ひなまつりばーじょんのもの)、
mswin版とcygwin版ではスレッドを利用した場合の挙動を変えてあり、mswin版の方に制限があります。ただし、ActiveScriptRubyの1.6.7.5以降では次のようにすることで制限をはずすことが出来ます。
SWin::Application.thread_critical=false
注: VisualBasicはMicrosoftの製品です
本ページ
別ページ
sourceforge間借り中
RWiki間借り中
ネット外
この段、放置気味。
当面
- キーボードアクセラレータ
- 不統一で覚えにくいメソッド名の命名方法を何とかする。(我ながら混乱した)
- プリンタ関係チェック
- Windowの寿命管理(現状では、Buttonなどをトップレベルにするとおかしくなったり)
- 英語ドキュメント(ぐえ)
- 日本語のドキュメント書き(当然)
- セキュリティ対策(無いものと思ったほうがいい?)
当面のその先
- 内部変数の名前付け替え(ある程度は終了)
- アイコンとか。
- ActiveXコントロールはどうしよう。表示はできるんだけど。
- Win32APIをワンクッション浮かす。
SWin::CanvasのBitbltでの軽い色化け。←そういうものらしい?
遠い予定
- 配列でオブジェクトになっているもろもろをStructに
- リモートで窓を開くためのサーバーと代理Windowクラスの作成
- Rubyプログラムのエディタ?(rubywinやRDEがあるのでほぼ放棄)
その他予定は未定(格下げとも言う)
- ボタン以外のオーナードロー(現状はボタンで十分?)
- DDEのホットリンク関係・ddeexecute以外のサーバ
近況は移動しました。
02/11/12以前の近況はこちら
私はあまりGUIのからむプログラミングは(趣味では)しないのですが、実際にはGUIが
ほしいことが多々あります。私が普段使っているWindowsにはVisualBasicという、
気軽な言語がありますが、これがまた、言語仕様が謎な言語で(怒)いらいらする
場面が多いのです。VisualBasicをしばらく使ってると体が慣れてくる(?)のですが、
Rubyなどの他の言語を使ってからVisualBasicに帰ってくると、へそと脳天で茶が
湧かせそうになることも(謎)
そこで、VisualBasicの代わりになるものは作れないのか、というのが今回の趣旨。
- VisualBasicのようにGUIを楽に作れること。
これが一番厄介なのですけどね。最終目的です。
- Rubyで書けること。
なにを今更って感じですが。
- 出来ればリモートで窓を開いたりする。処理とGUIの分離。
私のコンピュータの運用形態に依存した目的です。これはとりあえずオプション。
わたくし、SDKプログラムはあんまりやったことがないので、それが一番の問題点
でしょうか。しかし、無知が私をVisualuRuby計画作成へと動かしました。
現在、VisualuRuby計画(仮称)ってよりは、私のWin32API探検、って色合いも出てきております。
VBのような開発環境、を計画初期は本当に目指していたんです。が、
rubywinなどの素晴らしい開発環境が既にありますので、そっちにおんぶして貰う気に
なってしまいました。ただ、rubywinはGUI開発とは関係ありませんので、そっちの方は
やるつもりではあります。別件で遊んでいて全然進んでませんが...
できること。(DLL側)
- ウインドウを作る。表示する。消す。
- ウインドウにコントロール(子ウインドウ)を載せる。
- コントロールのイベントを拾う。
- その他ウインドウに飛んでくるメッセージを受ける。
- コントロールなどのサブクラス化も出来るようだ。
- メニューが出せて使える。
- コモンダイアログが出せる。(一部)
- ウインドウに描画できる(機能はまだ少ない?)
- ビットマップファイルをロードして描画できる。
- 内部的に持つビットマップを作成・描画・表示できる。
- メッセージループのアイドル時にも処理をさせることが出来る。
- 一応、Ctrl-Cも拾える。(コンソールからのみ)
- モーダルダイアログも開けられる
- プリンタも使えたりして
おお、なんかたくさんあるぞ。
できること。(Ruby側)
- ウインドウの作成が楽に出来る(はず)
- コントロールが楽にしよう出来る(はず)
- コントロールの配置がめんどくさいときやリサイズに対応したいときに
レイアウトマネージャーが使える。
- 動画などのマルチメディアも楽に使えたりする
- ドラッグ&ドロップできる。(OLEドラッグドロップも)
- オーナードローもなんとか
- DDEのEXECUTE/REQUEST/POKEのクライアント、EXECUTEのサーバ
- クリップボードも監視できるし使える
- スレッドも使える(mswin版の場合はrubyにパッチが当たってなければ制限有り)
難敵はオブジェクトの寿命の管理と、
Windowsシステムが勝手に作ってくれるスレッドか?
(この項、計画開始時から存在するものですが、消せない...)
ダウンロード関係は
こちらへ。
- 助田様には、mswin版での動作の報告を最初にしていただきました。
- よしだ様には、hInstanceの拾い方を教えていただき、普通のrubyで動作させることが出来るようになりました。また、アイドルイベントを拾うアイデアも頂きました。get_hInstance()とswinapp_messageloop()のコードの大枠はよしだ様の物です。UINT2NUM()の情報も感謝します。さらにポップアップメニューの関数まで作っていただきました。
- 白倉様にはmessageloop()でのCPU負荷の低減などの修正を頂きました。
- 助田様、白倉様、小松様、なかだ様、なかむら(う)様に、mswinでのコンパイルの障害の除去をしていただきました。当方には環境がないもので非常に助かります。
- なかだ様、swinの各形式(mswin/cygwin)のバイナリ作成・配布、ありがとうございます。おかげで私もmswin版を使ってみることが出来ます。他にパッチもたくさん頂きました。
- Szabo Peter sent me a countermeasure for vrdde.rb's error on WinNT. Thanks.
- MoonWolf様にはバグ報告・修正方法から開発ネタに至るまでさまざまな助言を頂きました。本計画の拡張を行うライブラリも公開されています。
- 雪見酒氏には、Toolbarのコードを頂きました。御作成のGUI作成画面FormDesignerにはインスパイアされるところ大です。さらにキーボードアクセラレータでもお世話になっております。(現在は共同開発者)
- arton様には、様々なコメントを頂いたり、インストーラの不具合のパッチなどを送っていただきました。本計画とスレッドの関係の知識は作者である私以上です。
- うしわたり様には、VREditComboboxのコードを頂きました。さらにバグフィクスや助言等も頂きました。
- Yuya様には、本計画の様々な拡張を頂きました。一部はcontribの下に、一部は本計画のファイルに(メソッドとして)そのまま入っております。
- Rich Kilmer sent me new swin_messagingcore() code to accept String for WPARAM.
- Wayne Vucenic sent me a bug report of swin_oledragstart() and fixed code for it.
- 鴫谷様には、さまざまな不具合の修正をしていただきました。また、VRCtlColorとそのサンプルを頂きました
- かとんぼ様より、ダイアログ周りのコードを頂きました。
- snow様より、VRStudyAidのファイルを頂きました。
- 西山様に、ruby1.8でのvrdialogの不具合を改修して頂きました。
- yas様には、様々なご指摘に加え、フォント周りやdeleteControl()周りの改修をして頂きました。
皆様、まことにありがとうございます。何度もお世話になっている方々は多分項目が落ちてるかと思うのですが、ご容赦下さいませ。(ちょっとこの段がふくらみすぎかもと思い始めましたので)
一緒に使うと(単独でも)シアワセになるもの
とりあえずWindowsで使えるものの列挙?順序は私のところに導入された順番です。
って事だったんですが、最近何がなんだか判らなくなってきましたので、
別の基準によるリンク集作りました。
ここへどうぞ。
Windowsオンリーのリンク集です。でもかなり古くなっています。
Rubyのページへ
Email: nyasu@osk.3web.ne.jp