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
更新履歴