最初のアプリケーション
次のアプリケーションは、ボタンを1つ配置したネイティブウィンドウを開きます。 ボタンをクリックするとメッセージボックスが表示されます。
ここでは、ガイドの大部分で使用する通常のオブジェクト指向APIを使います。 同等のブロック形式はコーディングスタイルで説明します。
require "uing"
UIng.init
window = UIng::Window.new("Hello World", 300, 200)
window.on_closing do
UIng.quit
true
end
button = UIng::Button.new("Click me")
button.on_clicked do
window.msg_box("UIng", "Hello from Crystal!")
end
window.child = button
window.show
UIng.main
UIng.uninit
ソースをhello.crとして保存し、実行します。
crystal run hello.cr
コードの流れ
UIng.initがネイティブGUIバックエンドを初期化します。Window.newとButton.newがネイティブコントロールを作成します。on_clickedがクリック後に実行する処理を登録します。window.childへの代入でボタンをウィンドウ内に配置します。window.showがインターフェースを表示します。UIng.mainがイベントループを開始し、終了時のコールバックがUIng.quitを呼ぶまで待機します。UIng.uninitがイベントループ終了後にアプリケーション全体のリソースを解放します。
on_closingからtrueを返すと、ウィンドウを閉じることができます。UIng.initには
ブロックを渡す書き方もあり、その場合はイベントループが終了した後にUIng.uninitが
自動的に呼び出されます。詳しくはランタイムとライフタイムを
参照してください。