はろーわーるどの例

MopsでHello Worldを作ってみました。

本家MopsページにあるNewbie Kit 2.7というHello WorldのサンプルはMops標準のWindowクラスを使っています。

私はいつもSelection FrameworkのselWindowクラスを使っているので私の独断で、Mops 2.8.2とSelection Frameworkを使ったHello Worldを作ることにしました。
文字はstaticTextとしてウインドウに張り付けてあります。

ウインドウは自由に動かすことができ、ウインドウの中味もきちんとアップデート
されます。
メニューはアップルメニューとファイルメニューの終了だけが利用できます。

リストは以下のような感じです。

[サンプルプログラム(hello.lzh.bin)のダウンロード]


[ここからリスト]

\ -------------------------------------------------------------------------
\ Hello World Application by Mops 2.8.2 with Selection Framework
\ Zenji 1997.5
\ -------------------------------------------------------------------------
\ --- クラスライブラリの読み込み ---
need alert
need menu
need selwindow
need statictext

\ ------------------- Alert (About Box) -----------------------------------
\ --- アラートの宣言 ---
1  alert  aboutBox

\ --- アバウト画面の初期化 ---
xts{ null } 128 init: aboutBox         \ resID 128 のアラートを使用

\ --- アバウト表示ルーチン ---
:a ShowAboutBox
  show: aboutBox
;a

\ ------------------- Menus -----------------------------------------------
\ --- メニューの宣言 ---
1  menu  fileMenu

\ --- アプリケーション終了ルーチン ---
:a QuitApp
  bye
;a

\ --- メニューの初期化 ---
xts{ ShowAboutBox DoDsk } 128 init: appleMen  \ resID 128 のメニューを使用
xts{ QuitApp } 129 init: fileMenu        \ resID 129 のメニューを使用

\ --- メニューバーの初期化 ---
: MenuInit
  getnew: appleMen
  getnew: fileMenu
  appleMen fileMenu 2 init: menuBar
;

\ ------------------- Start Up --------------------------------------------
\ --- ウインドウの宣言 ---
selwindow  helloWin

\ --- ウインドウアイテムの宣言 ---
statictext helloText

\ --- メインルーチン ---
: GO
  \ --- リソースファイルの読み込み ---
  instld?
  NIF
    " Hello.rsrc" OpenResFile
  THEN

  \ --- カーソルを消す ---
  -curs

  \ --- メニューを設定 ---
  MenuInit

  \ --- ウインドウの初期化 ---
  false setGrow: helloWin
  false setZoom: helloWin
  20 60 220 180 setbounds: helloWin
  " Window" docWind true false new: helloWin

  \ --- ウインドウアイテムの初期化 ---
  55 60 moveto: helloText
  " Osaka" fontName: helloText
  12 fontSize: helloText
  " Hello, World!" put: helloText

  \ --- ウインドウアイテムをウインドウにセット ---
  helloText add: helloWin

  \ --- カーソルを表示 ---
  arrowCurs

  \ --- イベントループ ---
  eventloop
;

\ ------------------- Error -----------------------------------------------
\ --- エラー処理 ---
: CRASH
  3 beep 3 beep 3 beep
  bye
;

endload


[ここまで]

ふう。思ったより長いですね。 コンパイルしたあとスタンドアロンアプリケーションとしてインストールしてResEditで必要なリソースを組み込むと100Kbyte程のプログラムになりました。たったこれだけの内容にしてはでかいですね。

しかしまあこれは最低限のランタイムルーチンの大きさがおよそ100kbyte程度ということのようで、今のところ処理をさらに増やしてもサイズはごくわずかしか増えないようです。

SmallTalkのようにオブジェクトに連続的にメッセージを送れるともう少し簡潔な表記にできるところですが・・・。

まあ、とにかくタダでアプリケーションをつくれる環境なわけで、あまり文句をいうとバチがあたるでしょう。

Mopsでのアプリケーション作成の雰囲気がわかっていただけたら幸いです。


戻る