wxRubyでメモ帳を作ってみます。 このページを作るに当たって、wxWindowsで始めるC++ GUIプログラミングを参考にさせていただきました。
ウィンドウを表示するだけのシンプルなプログラムは、wxRubyのサンプルフォルダにあるminimal\nothing.rbwを参照。 標準のインストール先は、C:\Program Files\wxRuby\samples\minimal\nothing.rbw。
#!ruby -Ks require 'wxruby' class MyFrame < Wx::Frame def initialize(title) super(nil, -1, title) end end class NothingApp < Wx::App def on_init frame = MyFrame.new("Minimal wxRuby App") frame.show end end a = NothingApp.new a.main_loop()
wxRubyでは、wxApp は Wx::App 、WxFrame は Wx::Frame とクラス名が異なっている。
スクリプトの文字コードを指定する。ない場合、文字化けを起こす可能性がある。
#!ruby -Ks
メニューを表示するウィンドウを作成する方法は、wxRubyのサンプルフォルダにあるminimal\minima.rbwを参照。 標準のインストール先は、C:\Program Files\wxRuby\samples\minimal\minimal.rbw。
require 'wxruby' include Wx
このサンプルでは、先頭で include Wx
して、クラス名の Wx::
は省略している。
class MyFrame < Frame def initialize(title,pos,size,style=DEFAULT_FRAME_STYLE) super(nil,-1,title,pos,size,style) if RUBY_PLATFORM == "WXMSW" set_icon(Icon.new("mondrian.ico",BITMAP_TYPE_ICO)) else set_icon(Icon.new("mondrian.xpm",BITMAP_TYPE_XPM)) end menuFile = Menu.new helpMenu = Menu.new helpMenu.append(Minimal_About, "&About...\tF1", "Show about dialog") menuFile.append(Minimal_Quit, "E&xit\tAlt-X", "Quit this program") menuBar = MenuBar.new menuBar.append(menuFile, "&File") menuBar.append(helpMenu, "&Help") set_menu_bar(menuBar) create_status_bar(2) set_status_text("Welcome to wxRuby!") evt_menu(Minimal_Quit) {onQuit} evt_menu(Minimal_About) {onAbout} end
wxRubyでは、クラス名だけでなく定数名も異なっている。(言語仕様の都合だろう。)
wxRubyの定数は、wxDEFAULT_FRAME_STYLE
が DEFAULT_FRAME_STYLE
と先頭のwx
がなくなるようだ。
C++では、イベントと関数をBEGIN_EVENT_TABLE
マクロで接続する。
BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(Menu_File_About, MyFrame::OnAbout) EVT_MENU(Menu_File_Quit, MyFrame::OnQuit) END_EVENT_TABLE()
一方、wxRubyの場合は、
evt_menu(Minimal_Quit) {onQuit} evt_menu(Minimal_About) {onAbout}
と、メソッドが用意されている。
アイコンを実行時に指定している点もRubyらしい。
if RUBY_PLATFORM == "WXMSW" set_icon(Icon.new("mondrian.ico",BITMAP_TYPE_ICO)) else set_icon(Icon.new("mondrian.xpm",BITMAP_TYPE_XPM)) end
更新履歴